python如何判断tcp异常断开_如何判断TCP连接已经中断?
用Python写网络应用是很常见的,因此一个常见的问题就是,如何在Python代码中判断TCP链接已经中断?
TCP有连接,如果通讯的某一方中断的连接,另外一方在socket层面如何感知?这个问题我也是经过一番挣扎才搞清楚的。
对于同步通信的TCP连接,即调用recv函数的时候是阻塞的,如果recv返回0长度的byte stream,就可以判断对方已经中断了此TCP连接了。而如果是异步通信,send函数发送失败,也说明TCP连接已经中断。
下面给出一段我自己写的代码,TCP同步通信,除了判断连接是否中断,还处理了各种可能的异常:
try:
gSock.send(bmsg)
recv = gSock.recv(RECV_BUFFER)
except socket.timeout:
msgbox.showwarning('Warning', '等待TCP消息回应超时')
return False
except (OSError,BrokenPipeError):
msgbox.showerror('Error', 'TCP连接已断开')
stop_conn()
return False
except AttributeError:
msgbox.showerror('Error', 'TCP未连接')
return False
except Exception as e:
msgbox.showerror('Error', repr(e))
return False
else:
if len(recv) == 0:
msgbox.showerror('Error', 'TCP服务器已断开连接')
stop_conn()
return False
这不是一段完整的代码,不能直接运行,只是示意。gSock是一个TCP连接的socket对象,msgbox可以弹出对话框。稍作修改,这段代码就可以随处使用。
-- EOF --
python如何判断tcp异常断开_如何判断TCP连接已经中断?相关推荐
- java如何处理tcp异常断开_(转)TCP连接异常断开检测
TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断 ...
- java如何处理tcp异常断开_针对TCP连接异常断开的分析
我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接: ...
- 网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)
TCP协议 TCP通信时序 下图是一次TCP通讯的时序图.TCP连接建立断开.包含大家熟知的三次握手和四次握手. TCP通讯时序 在这个例子中,首先客户端主动发起连接.发送请求,然后服务器端响应请求, ...
- linux的基础知识——TCP异常断开
1.TCP异常断开 1.1 心跳检测机制 1.2 设置TCP属性
- python如何判断tcp异常断开_TCP socket如何判断连接断开
http://blog.csdn.net/zzhongcy/article/details/21992123 SO_KEEPALIVE是系统底层的机制,用于系统维护每一个tcp连接的. 心跳线程属于应 ...
- java异常判断_Java异常退出条件的判断示例代码
无论是功能性代码还是算法性代码,程序都是一系列流程的合集 既然是流程就分为:一般流程和异常流程: 一般流程保证了基本功能: 异常流程则是对程序稳定性的保证,不能因为一些非法输入,项目就挂了: 注意,布 ...
- tcp报文格式_面试必备TCP(一):三次握手
TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...
- java tcp门禁_门禁控制器的TCP/IP协议功能
原标题:门禁控制器的TCP/IP协议功能 门禁控制器的TCP/IP协议功能 Linux支持多种不同的网络协议,TCP/IP是Linux系统中最健壮.速度最快和最可靠的部分.TCP/IP协议包括了各个层 ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
最新文章
- junit配合catubuter统计单元测试的代码覆盖率
- python画双折线图-Python Pandas 时间序列双轴折线图
- 卸载 流程_如何正确安装卸载mac软件
- java两个日期之间的日期_获取两个日期之间的日期形成一个集合
- 伯明顿分校计算机研究生专业,印第安纳大学伯明顿分校计算机科学硕士专业申请条件及申请材料...
- C/C++函数调用约定
- Active Directory的用户属性说明
- 精确的数据访问冲突_每个程序员都必须知道的8种通用数据结构
- nginx日志中$request_time时间异常问题排查
- python编程词典_Python 字典(Dictionary)操作详解
- 智慧医疗实现信息多跑人少跑
- Python爬虫编程常见问题解决方法
- mysql数据库管理与开发pdf_深入浅出mysql数据库开发、优化与管理维护.pdf
- mysql更新记录_如何查看 mysql 表中最近更新的记录
- 微信小程序——调查问卷案例
- 大学计算机基础教学存在的问题,浅谈大学计算机基础教学存在的问题及改进思路_优秀论文...
- 华为认证云服务工程师(HCIA-Cloud ServiceV3.0)-- 认证介绍
- 为什么没人比程序员更讨厌软件
- (邱维声)高等代数课程笔记:数域
- Congrats !