0
我一直在遇到Winsock2函數send()的問題。無論我提供什麼數據,send()函數總是返回0;例如發送0個字節,並且沒有錯誤。我現在谷歌搜索了一段時間,但還沒有找到解決方案。我已經檢查過要發送的數據格式是否正確,並且我傳遞了一個有效的套接字。WinSock的send()總是返回0字節發送
這裏是一個錯誤存在於代碼片段(我至少認爲):
//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
是的,就是這樣。奇怪的是,我可以發誓我之前使用過這種技術,而且沒有問題。無論哪種方式,感謝您的幫助! – dymk
@Dylan:你現在要接受David的回答,對吧? :) –
對不起,在接受之前不得不等待5分鐘,然後就受到了傷害。公認。 – dymk