Конференция "Сети" » контроль (учет) трафика WinInet [D7, WinXP]
 
  • Dmitriy (19.05.10 10:50) [0]
    Здравствуйте уважаемые мастера!
    Есть необходимость в вашей помощи! Встал вопрос: а можно ли как-то учитывать трафик во время отправки запроса на сервер и получения от него ответа?
    Задаю такой вопрос вот почему: для отправки на сервер использую функцию HttpSendRequest. Так вот эта функция посылает запрос и видимо получет ответ сервера, т.к. после ее выплнения можно прочитать заголовки, а сколько трафика истрачено неизвестно.
  • Rouse_ © (19.05.10 11:11) [1]
    Смотри в сторону HttpQueryInfo и флагах HTTP_QUERY_RAW_HEADERS_CRLF + модификатор HTTP_QUERY_FLAG_REQUEST_HEADERS
  • Dmitriy (19.05.10 12:25) [2]

    > Смотри в сторону HttpQueryInfo и флагах HTTP_QUERY_RAW_HEADERS_CRLF
    > + модификатор HTTP_QUERY_FLAG_REQUEST_HEADERS

    Прошу прощения, но в каком смысле?
    Ведь почему-то HttpQueryInfo возвращает результат только после выполнения функции HttpSendRequest, а не до неё или возвращает не то, что нужно. А мне желательно учитывать трафик во время выполнения самой функции. Такое в принципе возможно?
  • Rouse_ © (19.05.10 12:50) [3]
    До нее он возвращает весь запрос который уйдет на сервер, он и будет твоим исходящим трафиком который тебе нужно посчитать. После нее он отдаст тебе то что вернул сервер - это будет твой входящий трафик. Суммируй и будет тебе счастье.
  • Dmitriy (19.05.10 13:09) [4]

    > До нее он возвращает весь запрос который уйдет на сервер,
    >  он и будет твоим исходящим трафиком который тебе нужно
    > посчитать

    Допустим,может так оно и должно быть в принципе, но я попробовал вызвать HttpQueryInfo с этим флагами до HttpSendRequest и она мне выдала, что-то типа POST 'название скрипта' HTTP/1.1, однако уже после HttpSendRequest возращает именно 'весь запрос который должен уйти на сервер'. Может я что не так делаю?
    Функцию вызыва следующим образом:

    //bufferLength,index:cardinal;
    //buffer:array [0..1204] of char;
    bufferLength := SizeOf(buffer);
    index := 0;
    rs := HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF or HTTP_QUERY_FLAG_REQUEST_HEADERS, @buffer, bufferLength, index);

  • Rouse_ © (19.05.10 13:11) [5]
    Второй вызов делай без модификатора HTTP_QUERY_FLAG_REQUEST_HEADERS - ибо именно он отвечает за отображение исходящего
  • Dmitriy (19.05.10 14:22) [6]
    А всё таки, можно ли получить заголовки для отправки ДО вызова HttpSendRequest?
  • Rouse_ © (19.05.10 14:25) [7]
    Только исходящие, т.к. входящих без вызова нет и быть не может.
  • Сергей М. © (19.05.10 15:24) [8]

    > Dmitriy


    WinInet не даст актуальных данных о трафике, особенно если дело касается биллинга, ибо

    - доступны данные только о прикладном трафике
    - возможная работа через HTTP-прокси вносит свои коррективы в реальный прикладной трафик
 
Конференция "Сети" » контроль (учет) трафика WinInet [D7, WinXP]
Есть новые Нет новых   [134436   +24][b:0][p:0.001]