erro: [Errno 10048] Somente um uso de cada endereço de soquete (protocolo / endereço de rede / porta) é normalmente permitido

0

Estou criando testes de sistema em uma máquina com Windows 7 usando python, no qual preciso abrir várias conexões de soquete para outras máquinas. Eu também tenho vários IPs virtuais adicionados à máquina local.

Esses testes às vezes funcionam, mas quando executados rapidamente um após o outro, sempre me deparo com o seguinte erro:

error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted

Este problema foi publicado há pouco tempo, mas nenhuma resposta parece resolver o problema no meu computador. Aqui estão algumas informações mais específicas:

  • Cada soquete criado em python tem a seguinte opção:

    setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    
  • Também alterei regedit entradas seguindo as dicas para evitando exaustão de portas , o que não resolve meu problema. netstat -n mostra apenas sobre max. 30 portas no estado 'ESTABLISHED' ou 'TIME_WAIT' até o número de porta 10000.

  • Tanto quanto eu posso dizer do código, as conexões estão todas fechadas. Mas mesmo que não estejam, preciso que as conexões sejam fechadas ou sejam reutilizadas imediatamente.

Como posso corrigir esse problema para evitar esse erro?

Implementação do código atual:

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
    
por Alex 18.08.2014 / 15:09

0 respostas