已经为服务器建立了有效的套接字连接。有一个简单的循环,用于继续接收数据,直到服务器停止发送为止。所有文档都表明,尝试recv()太多次只会导致它返回0或-1(取决于具体情况)。相反,它使用某种IOError(在recv调用的行)杀死线程。我错过了什么?
编辑:sad
只是一些字符串流。我保证这与问题无关:D
另一个编辑:包含errno.h
并检查错误代码,但无济于事。
do {
memset(buffer,0,sizeof(buffer));
bytes = recv(s,buffer,sizeof(buffer)-40,0);
sad << buffer;
Sleep(1);
} while (bytes>0);
答案 0 :(得分:1)
也许您还应该检查errno
,因为通信渠道可能会过早结束。
#include <errno.h>
#include <string.h>
do {
memset(buffer,0,sizeof(buffer));
bytes = recv(s,buffer,sizeof(buffer)-40,0);
if (errno)
break;
sad << buffer;
Sleep(1);
} while (bytes>0);
if (errno)
std::cerr << "Premature end of connection: " << strerror(errno) << '\n';