我正在使用 Python 在 Windows7 机器上创建系统测试,其中我需要打开与其他机器的各种套接字连接。我还在本地机器上添加了几个虚拟 IP。
这些测试有时会有效,但是当一个接一个地快速执行时,我总是遇到以下错误:
error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted
这个问题已经发布了几次,但似乎没有答案可以解决我电脑上的问题。以下是一些更具体的信息:
在 python 中创建的每个套接字都有以下选项集:
setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
我还
regedit
根据提示将条目更改为避免端口耗尽,这并不能解决我的问题。netstat -n
仅显示最多约 30 个处于“ESTABLISHED”或“TIME_WAIT”状态的端口,最多可达端口号 10000。据我从代码中得知,所有连接都已关闭。但即使没有,我也需要关闭或立即重新使用连接。
我该如何修复此问题以避免此错误?
当前代码实现:
def my_connect(self):
if self._socket:
self._socket.shutdown(socket.SHUT_RDWR)
self._socket.close()
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
time.sleep(0.5)
self._socket.bind((self._bind_address, self._bind_port))
self._socket.connect(self._address)
return