C套接字:套接字关闭时避免垃圾

Luc*_*cas 5 c sockets networking select winsock2

我正在使用非阻塞套接字(fd_setsselect函数)编写服务器和客户端,一旦服务器关闭或关闭客户端套接字,客户端就会开始接收大量垃圾直到它崩溃.我已经被警告过,当工作时用select()插座将成为可读当连接被终止,但我怎么能知道

if( FD_ISSET( socket, &read ) ) 
{
} 
Run Code Online (Sandbox Code Playgroud)

如果原因只是常规数据或连接已结束?

非常感谢!

Dav*_*ger 6

文件描述符集不会告诉您套接字是否已关闭,只是您可能尝试从中读取它.当远程端关闭连接时,套接字将变为"可读".当您尝试recv()返回值时,该值将为0表示套接字已关闭.始终检查您的退货价值.