当前位置: 技术问答>linux和unix
请问linux下Server端程序怎么检测到Client拔掉网线的情况?好像收不到连接断开或错误事件!
来源: 互联网 发布时间:2015-11-19
本文导语: 我在linux下用epoll方式做了一个网络服务端程序,另外有Client端程序跟他连接。 当Client正常关闭时Server程序是可以得到响应的epoll事件的。 但是当client端突然拔掉网线时,server端却收不到epoll事件的,等了十分钟都等...
我在linux下用epoll方式做了一个网络服务端程序,另外有Client端程序跟他连接。
当Client正常关闭时Server程序是可以得到响应的epoll事件的。
但是当client端突然拔掉网线时,server端却收不到epoll事件的,等了十分钟都等不到epoll事件。一直认为连接还在。
请问怎么样才能判断Client拔网线的情况来判断连接是否连通?(client与Server端可能长时间无数据通讯,但连接要维持)
当Client正常关闭时Server程序是可以得到响应的epoll事件的。
但是当client端突然拔掉网线时,server端却收不到epoll事件的,等了十分钟都等不到epoll事件。一直认为连接还在。
请问怎么样才能判断Client拔网线的情况来判断连接是否连通?(client与Server端可能长时间无数据通讯,但连接要维持)
|
如果进行read,write操作时就会发现当前连接是否还通畅
如果你是用非阻塞的epool方式,看来就只有发“心跳包”来检测了,据说这是非常通用的方式
如果你是用非阻塞的epool方式,看来就只有发“心跳包”来检测了,据说这是非常通用的方式
|
除了心跳,没有别的办法。