Python中文
首页
教程
问答
标签
搜索
登录
注册
如何检测插座断开?/如何在超时时调用socket.recv?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用gevent补丁套接字连接到流服务器,使用adsl连接。</p> <p>我不控制服务器,但在我的测试中,如果我停止服务器,我可以通过检查recv的结果是否为空字符串来检测断开连接,但如果我关闭adsl调制解调器recv,则永远不会退出。如果我只是断开计算机的网线,它也不会返回空字符串,但当我重新连接它时,它会返回服务器同时发送的所有内容,所以我猜路由器或调制解调器会为我保持连接打开,并在我的网线断开时缓冲流。</p> <p>我试着将socket.SO_RCVTIMEO设置为几秒钟,但它没有检测到断开连接,recv继续“阻塞”永远。这是gevent,所以它只会阻塞greenthread,但是我需要尽快检测到这个断开连接,以便尝试重新连接。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>它没有检测到断开连接,因为没有任何断开连接,TCP“连接”仍然是活动的,并且应该是可靠的。例如,如果拔下LAN电缆,然后重新插上,连接仍将工作。</p> <p>如果你真的想尽快检测到断开连接,那么我想你应该每秒钟分析一次操作系统网络状态(ifconfig/ipconfig)/或者使用操作系统事件,然后在检测到网络断开连接时做你想做的事情。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python中从数据帧列中删除分类值?
9 回答
如何在python中从数据帧列表中删除引号
8 回答
如何在python中从数据帧创建列表
8 回答
如何在Python中从数据帧创建嵌套的JSON
3 回答
如何在Python中从数据帧显示wordcloud
3 回答
如何在Python中从数据帧的时间戳中删除字符
4 回答
如何在Python中从数据帧绘制简单绘图?
8 回答
如何在python中从数据帧行提取具有特定长度的范围?
9 回答
如何在python中从数据帧设置dict中的值
10 回答
如何在Python中从数据库中获得一个结果
6 回答
如何在python中从数据框中绘制分类条形图
10 回答
如何在Python中从数据框中选择特定细节?
5 回答
如何在python中从数据集中删除unicode
6 回答
如何在python中从数据集中删除某些数值?
7 回答
如何在python中从数据集中选择行
9 回答
如何在Python中从数组中删除元素
7 回答
如何在python中从数组中删除单个倒逗号?
1 回答
如何在python中从数组中删除对象?
10 回答
如何在python中从数组中删除引号
6 回答
如何在python中从数组中删除所有最小值
3 回答