如果我將套接字設置爲非阻塞,那麼如果沒有新數據要讀取,我應該從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