gpt4 book ai didi

python - 套接字失去连接

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:03 25 4
gpt4 key购买 nike

我知道 Twisted 可以很好地做到这一点,但是普通套接字呢?

您如何判断您是否随机丢失了套接字中的连接?就像,如果我的互联网断了一会儿又回来了。

最佳答案

我假设您在谈论 TCP。

如果您的互联网连接中断一秒钟,您可能根本不会丢失 TCP 连接,它只会重新传输并恢复操作。

当然还有 100 多种其他原因可能会导致您失去连接(例如,中间的 NAT 网关决定悄悄地断开连接。另一端被核弹击中。您的路由器烧毁了。另一端的人猛拉出来他的网线等等等等)

如果你需要检测死节点/关闭的套接字等,你应该这样做:

  • 从套接字读取或以任何其他方式等待其上的传入数据事件。这允许您检测连接何时正常关闭,或发生错误(读取它返回 0 或 -1)- 至少如果另一端仍然能够向您的主机发送 TCP FIN/RST 或 ICMP 数据包.

  • 写入套接字 - 例如每 N 秒发送一些心跳。当另一端静默失败时,仅从套接字读取不会检测到问题。如果那台 PC 掉线了,它显然不能告诉你它掉线了 - 所以你必须给它发送一些东西,看看它是否有响应。

  • 如果您不想每 N 秒写一次心跳,您至少可以打开 TCP keepalive - 如果对等方已死,您最终会收到通知。您仍然需要从套接字中读取,默认情况下,keepalive 通常每 2 小时发送一次。不过,这仍然比将死套接字保留数月要好。

关于python - 套接字失去连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com