有没有办法在 C 语言中不用 select() 来检查远程端的套接字是否已断开连接?
我不想使用 select() 的原因是,在我的缓冲区已满的情况下,我故意忽略的套接字上可能有可供读取的数据和 select(readfds=[socket_fd] ) 总是会立即返回让我知道。
最佳答案
如果您在套接字上有一个阻塞的 read() 函数调用,并且它返回整数值 0,这意味着套接字连接已关闭。
while ( n = read(sockfd, buffer, BUFFER_SIZE) ) {
//use buffer contents
}
当数据从另一端发送时,这个循环将继续。
关于在没有 select() 的情况下检查 C 中的套接字是否断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900074/