为什么tcp套接字地址不需要在Windows上设置REUSEADDR就可以立即重用?

2024-04-19 04:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Python网络编程基础,并尝试以下代码。你知道吗

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

在注释打开的行时插座.SO\u,在Linux上会出现操作错误,一切正常。但是在Win8上,即使我显式关闭了,它的行为也和正常的一样插座.SO\u. 为什么会有这种行为?你知道吗


Tags: 代码https网络githubcomso编程py3
1条回答
网友
1楼 · 发布于 2024-04-19 04:38:25

通常,当服务器套接字处于TIME_WAIT状态时,必须使用SO_REUSEADDR标志。这是一种非常保守的方法,可以确保服务器不会再次接收来自以前连接的任何散乱数据,并且不会因为序列号可能与以前的序列号不同而造成混淆。通常发生这种情况的概率很低。TIME_WAIT状态的超时非常高(通常为30秒)。你知道吗

操作系统可以通过设置一些配置参数来选择允许重用连接。在Linux中是/proc/sys/net/ipv4/tcp_tw_*This link已经得到了它的详细信息。你知道吗

this link已经获得了一些有关windows的详细信息。您可能需要检查此项的值。或者,如果您正在打开大量的连接,那么很可能-连接a很快就被Windows重新使用,而不需要显式地使用SO_REUSEADDR,正如链接中所描述的,可用TCB块的数量较少。你知道吗

相关问题 更多 >