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问题
plt.savefig不会覆盖现有文件
7 回答
plt.savefig不保存图像
4 回答
plt.savefig在jupyter笔记本中不起作用
9 回答
plt.savefig在从另一个fi调用时停止工作
9 回答
plt.savefig在调用plt.show之前保存空数字
5 回答
plt.save不创建png文件
5 回答
plt.scatter overlay分类数据帧列
3 回答
Plt.Scatter:如何添加title、xlabel和ylab
5 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
3 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
8 回答
plt.set_title()中的标题字符串有误
6 回答
plt.show()
9 回答
plt.show()不在Jupyter笔记本上渲染任何内容
7 回答
plt.show()不打印plt.plot only plt.scatter
2 回答
plt.show()不显示三维散射图像
1 回答
plt.show()不显示任何内容
2 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
9 回答
plt.show()使终端挂起
4 回答
plt.show()无法使用此代码
4 回答
plt.show()没有打开新的图形风
8 回答