![错误:[Errno 10048] 通常只允许使用每个套接字地址(协议/网络地址/端口)一次](https://linux22.com/image/1419781/%E9%94%99%E8%AF%AF%EF%BC%9A%5BErrno%2010048%5D%20%E9%80%9A%E5%B8%B8%E5%8F%AA%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8%E6%AF%8F%E4%B8%AA%E5%A5%97%E6%8E%A5%E5%AD%97%E5%9C%B0%E5%9D%80%EF%BC%88%E5%8D%8F%E8%AE%AE%2F%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%2F%E7%AB%AF%E5%8F%A3%EF%BC%89%E4%B8%80%E6%AC%A1.png)
我正在使用 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