gpt4 book ai didi

python - 为什么在 Windows 上无需设置 SO_REUSEADDR 就可以立即重用 tcp 套接字地址?

转载 作者:可可西里 更新时间:2023-11-01 11:50:31 27 4
gpt4 key购买 nike

我正在阅读 Foundations of Python Network Programming 并按如下方式尝试代码。

https://github.com/brandon-rhodes/fopnp/blob/m/py3/chapter03/tcp_sixteen.py

在注释打开 socket.SO_REUSEADDR 的行时,它在 Linux 上引发了一个 OSError,一切正常。但在 Win8 上,即使我明确关闭 socket.SO_REUSEADDR,它的行为也正常。为什么会出现这种行为?

最佳答案

通常,当服务器套接字处于TIME_WAIT 状态时,必须使用SO_REUSEADDR 标志。这是一种非常保守的方式,可确保来自先前连接的任何杂散数据不会最终被服务器再次接收并导致混淆,因为序列号可能与先前的不同。通常发生这种情况的可能性很低。 TIME_WAIT 状态的超时时间非常长(通常为 30 秒)。

操作系统可能会通过设置一些配置参数来选择允许重用连接。例如。在 Linux 中它是 /proc/sys/net/ipv4/tcp_tw_*This link有关于它的详细信息。

this link有一些关于 Windows 的详细信息。您可能想检查它的值(value)是多少。或者,如果您打开大量连接,很可能 - Windows 会快速重新使用这些连接,而无需您明确需要 SO_REUSEADDR,如可用 TCB block 数量较少的链接中所述.

关于python - 为什么在 Windows 上无需设置 SO_REUSEADDR 就可以立即重用 tcp 套接字地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31072396/

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