如果我的问题是重复的,我真的很抱歉,但我没有在网站上找到有用的信息.
我正在使用非阻塞套接字和select().如何检测客户端是否在非阻塞套接字上关闭了连接?我看到当没有数据可供读取时以及关闭连接时,read()返回-1并且errno = EWOULDBLOCK.
我如何区分上述案件?
最佳答案 当对等方关闭连接时:
> select()将使套接字可读.
>套接字上的recv()或read()将返回零.
I saw that a read() returns -1 with errno = EWOULDBLOCK when no datas are available to be read
正确,但连接未关闭.
and also when a connection is closed.
不,你没有.那不对.它返回零.
How can I discriminate above cases?
他们不一样,他们也没有以同样的方式表现出来.