当前位置: 技术问答>linux和unix
急问:怎么判断一个非阻塞的socket已经断开了?
来源: 互联网 发布时间:2015-07-03
本文导语: read或者write一个非阻塞的socket时,根据什么条件可以比较肯定地判断这个socket已经断开了? 重酬!! | read()返回为0时socket已经断开。 | 检测SIGPIPE信号,可以达到目的。 | ...
read或者write一个非阻塞的socket时,根据什么条件可以比较肯定地判断这个socket已经断开了?
重酬!!
|
read()返回为0时socket已经断开。
|
检测SIGPIPE信号,可以达到目的。
|
如果使用的是tcp协议,read或write时会返回错误;如果使用的是udp协议,根本就没有建立连接,当然无法判断是否断开。
|
我们经常使用握手消息,每隔一段时间就向远端发送握手消息,并且在规定的时间内等待握手响应,这个响应如果没有到达,就说明连接又问题。
使用握手检查连接,比TCP协议本身的要可靠,而且更可控。有的时候,TCP表现出来的是连接正常,但是其实连接已经断了。(我这里说的TCP和可能socket的问题)。
使用握手检查连接,比TCP协议本身的要可靠,而且更可控。有的时候,TCP表现出来的是连接正常,但是其实连接已经断了。(我这里说的TCP和可能socket的问题)。
|
使用 raw 的 socket, 分析 是否 接受 到 了 fin 信号 :)
不知道 可行 不 ?
不知道 可行 不 ?