当前位置: 技术问答>linux和unix
如何有效判断服务器已经连接不上(服务器关闭,服务器非法退出等原因)
来源: 互联网 发布时间:2015-10-20
本文导语: 我写了一个于服务器程序对应的client 在client中我每将间隔30秒发送一个数据包,假如服务器 活的,那么我的client会收到一个服务器的应答, 现在碰到一个问题. 服务器关闭时, 还没等到client发送一个数据包时,client程序...
我写了一个于服务器程序对应的client
在client中我每将间隔30秒发送一个数据包,假如服务器 活的,那么我的client会收到一个服务器的应答,
现在碰到一个问题.
服务器关闭时, 还没等到client发送一个数据包时,client程序就自动退出了.
在linux的命令行下,提示:管道已经断开.
不知道是什么原因,是不是我需要在系统探测到socket断开之前,先作某些处理呢 ?
如何才能知道与服务器通讯的socket已经断开 ???
谢谢各位了!
在client中我每将间隔30秒发送一个数据包,假如服务器 活的,那么我的client会收到一个服务器的应答,
现在碰到一个问题.
服务器关闭时, 还没等到client发送一个数据包时,client程序就自动退出了.
在linux的命令行下,提示:管道已经断开.
不知道是什么原因,是不是我需要在系统探测到socket断开之前,先作某些处理呢 ?
如何才能知道与服务器通讯的socket已经断开 ???
谢谢各位了!
|
在发送过程中,如果对方连接关闭,你会收到SIGPIPE信号
在没有SIGPIPE信号处理的情况下,默认的情况会使用程序退出
设置了SIGPIPE处理后,send返回-1,errno为EPIPE
其实你只要初始化时signal(SIGPIPE, ...)就行了
在没有SIGPIPE信号处理的情况下,默认的情况会使用程序退出
设置了SIGPIPE处理后,send返回-1,errno为EPIPE
其实你只要初始化时signal(SIGPIPE, ...)就行了