正常断开连接情况下,判断非阻塞模式socket连接是否断开


摘自: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  正常
    其它情况    关闭


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM