700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python如何判断tcp异常断开_如何判断TCP连接已经中断?

python如何判断tcp异常断开_如何判断TCP连接已经中断?

时间:2018-11-01 16:30:55

相关推荐

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 --

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。