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

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

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

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

转载于:https://www.cnblogs.com/johnchain/p/3368454.html

python 服务端判断客户端异常断开相关推荐

  1. 服务端判断客户端是移动端浏览器还是PC端浏览器

    在开发过程中,有时候业务要求需要对移动端和PC端分别处理,如果是移动端,那么返回页面A,如果是PC端,那么返回页面B,而判断浏览器是移动端还是PC端,我们一般通过user-agent判断,服务端和前端 ...

  2. java 判断客户端_javaweb服务端判断客户端使用的是手机还是电脑访问

    public class ToolCheckAgentIsMobile { private final static String[] agent = { "Android", & ...

  3. python学习随堂笔记—TCP服务端与客户端

    思想: 1. 客户端 向服务端 发起连接 2. 服务端 接到请求,双方建立连接 3. 客户端 向 服务端发消息 4. 服务端 应答客户端 5. 服务端 与客户端循环读写操作 6. 操作完成之后客户端发 ...

  4. ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)

    ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本 rosed msg和srv 创建msg 使用rosmsg 创建srv 使用rossrv 重新make一下软 ...

  5. UE4 TCP通信 (UE客户端与网络调试助手服务端、python服务端通信)

    目录 一.使用UE4建立TCP客户端 二.使用网络调试助手建立服务端 三.基于网络调试助手的服务端与UE客户端通信 四.基于python的TCP服务端与UE客户端通信 一.使用UE4建立TCP客户端 ...

  6. netty tcp服务端主动断开客户端_【Netty】服务端和客户端

    欢迎关注公众号:[爱编程] 如果有需要后台回复2019赠送1T的学习资料哦!! 本文是基于Netty4.1.36进行分析 服务端 Netty服务端的启动代码基本都是如下: private void s ...

  7. python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...

    话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...

  8. python 服务端,判断H5和PC的方法

    python服务端,判断H5和PC class Common(object):def checkMobile(request):""":param request::re ...

  9. python交互式编程客户端_【python】UDP网络编程:实现服务端与客户端的交互、简单的AI智能模式...

    关于UDP网络编程 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层.UDP是面向非连接的协议,它不与对方建立连接,而是直接把要发的数据发给对方. [UDP网络 ...

  10. OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现

    1.网络以覆盖范围划分:局域网/城域网/广域网   互联网/因特网   以太网/令牌环网--组网方式 2.在网络中必须能够为一表示每一台主机,才能实现点到点的精确通信            IP地址: ...

最新文章

  1. c调用c++ qt_C++中是如何调用C接口的?
  2. 文化之旅(dijstra)
  3. gradle修改版本
  4. C#中对于float,double,decimal的误解
  5. Windows server 2003 R2 文件服務管理測試報告
  6. 年前最后一波成绩单,请查收!
  7. 关于利用IBERT核对GTX收发器板级测试的原理与过程详解
  8. CF1156F. Card Bag
  9. VS.NET提示试图运行项目时出错:无法启动调试。绑定句柄无效解决办法
  10. kotlin 判断数字_Kotlin程序检查数字是否为质数
  11. axure 小程序 lib_使用maven和fat jar/war运行应用程序的对比
  12. Centos7使用yum下载rpm包而不执行安装
  13. Spark源码分析之Master状态改变处理机制原理
  14. 【转】Numpy三维数组的转置与交换轴
  15. xposed自定义参数
  16. 为何你的网络爬虫技术提升缓慢?甚至小白无从下手学习?
  17. 计算机无法连接富士网络打印机,富士施乐打印机无法识别USB端口的解决方案
  18. 深入解读5G关键技术
  19. DNS无法解析IP_网站域名解析又出错啦!别着急,让我来帮你
  20. 社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践

热门文章

  1. JavaScript if(x),==和===解析(翻译整理)
  2. bzoj 2946: [Poi2000]公共串 后缀自动机
  3. 学习总结之 WebApi 用户登录和匿名登录,及权限验证
  4. [CSS3]Clearfix
  5. XML参考 :XmlReader 详解、实例(3)-- 读取XML节点和属性名称
  6. 为什么我偏爱用 GitHub 来写书?
  7. ffmpeg ffplay ffprobe资料整理
  8. javascript+Java 实现MD5加密登录密码
  9. JS鼠标捕获DIV内选中的坐标和宽高
  10. 《马克思主义哲学原理》考点知识串讲-自考