首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python+socket完美实现TCP长连接保持存活

Python+socket完美实现TCP长连接保持存活

作者头像
Python小屋屋主
发布2020-04-15 15:34:05
15.3K0
发布2020-04-15 15:34:05
举报
文章被收录于专栏:Python小屋Python小屋Python小屋

在网络开发使用TCP协议实现客户端和服务端通信时,某些场合需要保持长连接,但这并不容易。在默认情况下,超过一定时间没有数据收发操作时,连接会自动断开,从而导致数据丢失。例如下面的提示信息,

这种问题一般的解决方案是每隔一段时间就发送心跳包检测对方是否存活,同时也通知对方自己仍在存活。

为了保持连接持久存活,需要在创建套接字之后进行一定的设置,首先打开TCP_KEEPALIVE选项,但是只打开这个选项是不够的,因为默认无数据收发2小时之后才开始发送心跳包,这时候连接基本上已经断开了。所以还需要设置通过心跳包保持连接存活的相关参数,例如无数据收发之后多久开始发送心跳包,以及多久发送一次心跳包。

服务端代码:

客户端代码:

运行结果:

在上面的代码中,服务端和客户端都启用了保活选项,在实际使用中并不需要这样做,只需要在服务端或客户端单侧启用就可以实现同样的功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档