当前位置: 技术问答>linux和unix
tcp其中一端突然down掉,另一端无限可读?
来源: 互联网 发布时间:2016-07-07
本文导语: 假如连个程序通过tcp建立连接通讯,两端都通过select来判断fd是否可读,如果有数据就读取,结果如果一段突然挂掉的话,另一端会出现无限可读,其实没有数据,读出来的数据长度为0,但select 会通知fd总是可读,...
假如连个程序通过tcp建立连接通讯,两端都通过select来判断fd是否可读,如果有数据就读取,结果如果一段突然挂掉的话,另一端会出现无限可读,其实没有数据,读出来的数据长度为0,但select 会通知fd总是可读,什么原因
|
1. 关于select的可读,是指read不会阻塞:
2. 关于read返回零:
对socket来说,也就是对方关闭连接(收到FIN)
关于recv返回零:
|
对端异常、或者关闭连接时,select肯定会及时返回的,如果此时read返回0,表示该连接已中断,你应该主动关闭该连接。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。