我有两台机器运行一个我为测试目的编写的简单的C TCP服务器,一台是Fedora 16,另一台是Ubuntu 11.10。我的Fedora机器完美地工作,但在Ubuntu机器上,recv()不会阻塞。请记住这些机器正在运行完全相同的代码。有人见过这种情况吗?谢谢。
int TcpSocket::ReadFromClient(int socket, char* buf, int len)
{
char *request = buf;
int slen = len;
int c = recv(socket, request, slen, 0);
while((c > 0) && (request[c-1] != '\n'))
{
request += c;
slen -= c;
c = recv(socket, request, slen, 0);
}
if (c < 0)
{
return c;
}
else if(c == 0)
{
//Sending back an empty string
buf[0] = '\0';
}
return len-slen;
}
slen
参数为0。 - nos