2024-04-19 04:38:25 发布
网友
我正在阅读Python网络编程基础,并尝试以下代码。你知道吗
https://github.com/brandon-rhodes/fopnp/blob/m/py3/chapter03/tcp_sixteen.py
在注释打开的行时插座.SO\u,在Linux上会出现操作错误,一切正常。但是在Win8上,即使我显式关闭了,它的行为也和正常的一样插座.SO\u. 为什么会有这种行为?你知道吗
通常,当服务器套接字处于TIME_WAIT状态时,必须使用SO_REUSEADDR标志。这是一种非常保守的方法,可以确保服务器不会再次接收来自以前连接的任何散乱数据,并且不会因为序列号可能与以前的序列号不同而造成混淆。通常发生这种情况的概率很低。TIME_WAIT状态的超时非常高(通常为30秒)。你知道吗
TIME_WAIT
SO_REUSEADDR
操作系统可以通过设置一些配置参数来选择允许重用连接。在Linux中是/proc/sys/net/ipv4/tcp_tw_*。This link已经得到了它的详细信息。你知道吗
/proc/sys/net/ipv4/tcp_tw_*
this link已经获得了一些有关windows的详细信息。您可能需要检查此项的值。或者,如果您正在打开大量的连接,那么很可能-连接a很快就被Windows重新使用,而不需要显式地使用SO_REUSEADDR,正如链接中所描述的,可用TCB块的数量较少。你知道吗
通常,当服务器套接字处于
TIME_WAIT
状态时,必须使用SO_REUSEADDR
标志。这是一种非常保守的方法,可以确保服务器不会再次接收来自以前连接的任何散乱数据,并且不会因为序列号可能与以前的序列号不同而造成混淆。通常发生这种情况的概率很低。TIME_WAIT
状态的超时非常高(通常为30秒)。你知道吗操作系统可以通过设置一些配置参数来选择允许重用连接。在Linux中是
/proc/sys/net/ipv4/tcp_tw_*
。This link已经得到了它的详细信息。你知道吗this link已经获得了一些有关windows的详细信息。您可能需要检查此项的值。或者,如果您正在打开大量的连接,那么很可能-连接a很快就被Windows重新使用,而不需要显式地使用
SO_REUSEADDR
,正如链接中所描述的,可用TCB块的数量较少。你知道吗相关问题 更多 >
编程相关推荐