У меня проблема с функцией send () Winsock2. Независимо от того, какие данные я предоставляю, функция send () всегда возвращает 0; например, 0 байтов отправлено, и ошибок нет. Я уже некоторое время искал в Google, но пока не нашел решения. Я проверил, что отправляемые данные правильно отформатированы, и я передаю ему правильный сокет.
Вот фрагмент кода, в котором находится ошибка (я думаю, по крайней мере):
//Send HTTP header to server
#define MAX_HEADER_LEN 512
#ifdef UNICODE
char* cpHost = (char*)malloc(sizeof(char) * (_tcslen(cpServer)+1));
wcstombs(cpHost, cpServer, _tcslen(cpServer));
cpHost[_tcslen(cpServer)] = '\0';
#else
char* cpHost = cpServer;
#endif
char cpHeader[MAX_HEADER_LEN];
sprintf(cpHeader, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", "/", cpHost);
#ifdef UNICODE
free(cpHost);
#endif
//Send the HTTP request to the sever
int iSent;
if(iSent = send(servSocket, cpHeader, strlen(cpHeader), 0) == SOCKET_ERROR)
{
_tprintf(TEXT("Error sending header to server: %d\n"), WSAGetLastError());
WSACleanup();
return 2;
}
_tprintf(TEXT("Sent '%d' bytes\n"), iSent);
return 0;
Есть идеи, что вызывает такое поведение?
Вот полный источник файла (извините за все плохие привычки кодирования):
http://pastebin.com/URsaFz0Q
Спасибо за вашу помощь,
--Dylan