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