如果我将套接字设置为非阻塞,那么如果没有新数据要读取,我应该从recv()中获得什么?使用非阻塞套接字时,recv()返回什么?
目前,我正在使用和if语句来查看是否收到大于-1的任何东西。但是,如果没有收到任何东西,它似乎会阻止。这是我的代码如下所示:
flags = fcntl(newfd, F_GETFL);
flags |= O_NONBLOCK;
fcntl(newfd, F_SETFL, flags);
while(1){
...
...
if((recvBytes = recv(newfd, recvBuf, MAXBUFLEN-1, 0)) > -1) {
...
}
}
对'fcntl()'的调用是否成功了?看起来好像你在测试这个。 – alk