TCP端口复用引发的异常,用setsockopt来解决

Posted pythonywy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP端口复用引发的异常,用setsockopt来解决相关的知识,希望对你有一定的参考价值。

TCP端口复用引发的异常,用setsockopt来解决

我们在并发连接一个服务端时候他会出现这种情况

OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

假如端口被socket使用过,并且利用socket.close()来关闭连接,但此时端口还没有释放,要经过一个TIME_WAIT的过程之后才能使用,这是TNN的相当烦银的,为了实现端口的马上复用,可以选择setsockopt()函数来达到.

端口复用的实现,我在这里用Python举个TCP端口复用的例子,UDP套接字要做的完全一样。

我们可以在定义好的端口加这句

from socket import 

server = socket()
server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 8000))
server.listen(5)

这样就不会报错了

以上是关于TCP端口复用引发的异常,用setsockopt来解决的主要内容,如果未能解决你的问题,请参考以下文章

使用setsockopt实现端口复用

TCP客户端随机端口能否复用

Jmeter 复用长连接 解决端口占用的问题

12 TCP服务器 IO多路复用

套接字 的端口重用 作用 是啥??

setsockopt中参数之SO_REUSEADDR的意义