python 服务端判断客户端异常断开

时间:2022-10-06 17:37:38

在进行 python 套接字编程时,服务端程序要判断客户端是否异常断开【由于断电或者其他突发情况导致链接中断】,可以通过以下几种方式判断:

1、如果通信协议中,设有心跳包,则可记录上次收到时间,将服务端epoll 设为水平触发,这样就会有不断的可读事件触发,在判断读到的字符为空字符时,通过当前时间与上次收到数据时间的时间差,来判断客户端存活否;

2、将服务端epoll 设为水平触发,这样就会有不断的可读事件触发,在判断读到的字符为空字符时,向客户端尝试写数据,通过捕捉异常 IOError,来判断客户端的链路是否已断开。

3、构造链接类,包含链接句柄和时间字段[客户端最近活跃时间],然后开一个看门狗线程,定期的扫描链接队列,如果该链接实例时间超过自己定义的超时时间,则删之。扫描的频率视情况而定。