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

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

我正在使用 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

相关内容