我有 2 台机器运行我为测试目的编写的简单 C TCP 服务器,1 台使用 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;
}