假如端口被socket使用过
,并且利用socket.close()来关闭连接,但此时端口还没有释放
,要经过一个TIME_WAIT的过程之后才能使用,这是TNN的相当烦银的,为了实现端口的马上复用
,可以选择setsockopt()函数来达到目的。(以下是网上找到的一篇文章的一小段相关例子,试用之后,相当有效果,特此提取出来收藏)
端口复用的实现,我在这里用Python举个TCP端口复用的例子,UDP套接字要做的完全一样。
import socket tcp1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 在绑定前调用setsockopt让套接字允许地址重用 tcp1.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) tcp2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 接下来两个套接字都也可以绑定到同一个端口上 tcp1.bind(('0.0.0.0', 12345)) tcp2.bind(('0.0.0.0', 12345))