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