如果我的问题重复,我真的很抱歉,但我没有在网站上找到有用的信息。
我正在使用非阻塞套接字和 select()。如何检测客户端是否关闭了非阻塞套接字上的连接?我看到当没有数据可供读取以及连接关闭时, read() 返回 -1 和 errno = EWOULDBLOCK 。
如何区分上述情况?
当对等方关闭连接时:
select()将返回可读的套接字。recv()或将返回零。read()我看到当没有数据可供读取时, read() 返回 -1 且 errno = EWOULDBLOCK
正确,但连接未关闭。
以及当连接关闭时。
不,你没有。这是不正确的。它返回零。
我如何区分以上情况?
它们并不相同,而且它们的表现方式也不同。