InternetReadFile() vs recv()
От: aleksan  
Дата: 23.02.12 02:15
Оценка:
Вопрос в следующем:
Соединение с сервером устанавливается с помощью WinInet последовательным вызовом функций
HttpOpenRequest, HttpSendRequest, HttpQueryInfo.
После этого получаю дескриптор сокета таким вот образом:

SOCKET GetSocket(HINTERNET hRequest)
{
INTERNET_DIAGNOSTIC_SOCKET_INFO idsi;
DWORD bufferSize = sizeof(idsi);
if (!InternetQueryOption(hRequest, INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO, &idsi, &bufferSize))
return INVALID_SOCKET;
else
if (idsi.Socket == INVALID_SOCKET)
return INVALID_SOCKET;
return (SOCKET)idsi.Socket;
}

Если после этого вызвать функцию recv(....), котороя использует данный сокет то получаю мусор,
хотя никаких ошибок нет. А InternetReadFile отрабатывает нормально.
Что тут не так?
Re: InternetReadFile() vs recv()
От: okman Беларусь https://searchinform.ru/
Дата: 23.02.12 05:44
Оценка:
Здравствуйте, aleksan.

Может быть, ответы сервера сжаты каким-нибудь gzip-ом ?
InternetReadFile, вероятно, вполне может разжать контент "за кадром",
оставляя эту деталь вне поля зрения клиента, а recv — нет.
Re[2]: InternetReadFile() vs recv()
От: ononim  
Дата: 23.02.12 16:50
Оценка:
O>Может быть, ответы сервера сжаты каким-нибудь gzip-ом ?
O>InternetReadFile, вероятно, вполне может разжать контент "за кадром",
O>оставляя эту деталь вне поля зрения клиента, а recv — нет.
..или ваще там https
Как много веселых ребят, и все делают велосипед...
Re[3]: InternetReadFile() vs recv()
От: aleksan  
Дата: 23.02.12 20:59
Оценка:
Здравствуйте, ononim, Вы писали:

O>>Может быть, ответы сервера сжаты каким-нибудь gzip-ом ?

O>>InternetReadFile, вероятно, вполне может разжать контент "за кадром",
O>>оставляя эту деталь вне поля зрения клиента, а recv — нет.
O>..или ваще там https

А как можно выяснить есть ли там шифровка даных?
Вот параметры вызовов функций:

InternetConnect(hSession, szURL, INTERNET_DEFAULT_HTTP_PORT,
m_VidProp.m_pVideoParams->lpszUser, m_VidProp.m_pVideoParams->lpszPassword, INTERNET_SERVICE_HTTP, 0, 1);

HttpOpenRequest(m_hConnection, _T("GET"), szServer, _T("HTTP/1.0"), NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT, dwRet);
HttpSendRequest(m_hInternetFile, NULL, 0, NULL, 0);
HttpQueryInfo(m_hInternetFile, HTTP_QUERY_STATUS_CODE, dtaBuff, &dwRet, NULL);

Цепляюсь к видео серверу на котором стоит линух.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.