正常断开连接情况下,判断非阻塞模式socket连接是否断开
2013-09-11 17:41
330 查看
摘自:http://blog.chinaunix.net/uid-15014334-id-3429627.html
在UNIX/LINUX下,
1,对于主动关闭的SOCKET, recv返回-1,而且errno被置为9(#define EBADF 9 /* Bad file number */)或104 (#define ECONNRESET 104 /* Connection reset by peer */)
2,对于被动关闭的SOCKET,recv返回0,而且errno被置为11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
3,对正常的SOCKET, 如果有接收数据,则返回>0, 否则返回-1,而且errno被置为11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
因此对于简单的状态判断(不过多考虑异常情况),
recv返回>0, 正常
返回-1,而且errno被置为11 正常
其它情况 关闭
在UNIX/LINUX下,
1,对于主动关闭的SOCKET, recv返回-1,而且errno被置为9(#define EBADF 9 /* Bad file number */)或104 (#define ECONNRESET 104 /* Connection reset by peer */)
2,对于被动关闭的SOCKET,recv返回0,而且errno被置为11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
3,对正常的SOCKET, 如果有接收数据,则返回>0, 否则返回-1,而且errno被置为11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
因此对于简单的状态判断(不过多考虑异常情况),
recv返回>0, 正常
返回-1,而且errno被置为11 正常
其它情况 关闭
相关文章推荐
- java中判断socket网络远端是否断开连接
- socket.sendUrgentData判断网络远端是否断开连接
- 如何判断一个SOCKET连接是否已经断开
- c#通过socket判断服务器连接是否正常
- socket.sendUrgentData判断网络远端是否断开连接
- java中判断socket服务器端是否断开连接
- java中判断socket网络远端是否断开连接
- socket.sendUrgentData判断网络远端是否断开连接
- 如何判断socket是否连接,异常断开拔出网线
- java中判断socket服务器端是否断开连接
- java中判断socket服务器端是否断开连接
- 如何判断socket是否已经断开和防止外部攻击,只连接不传输数据
- 如何判断一个SOCKET连接是否已经断开
- java中判断socket服务器端是否断开连接
- C#使用Socket快速判断数据库连接是否正常的方法
- JAVA 判断Socket 远程端是否断开连接
- java中判断socket服务器端是否断开连接
- java中判断socket网络远端是否断开连接
- java中判断socket服务器端是否断开连接
- java中判断socket服务器端是否断开连接