Mam pytanie dotyczące gniazda klienta w sieci TCP / IP. Powiedzmy, że używam
try:
comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
comSocket.bind(('', 5555))
comSocket.connect()
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
Utworzone gniazdo będzie powiązane z portem 5555. Problem w tym, że po zakończeniu połączenia
comSocket.shutdown(1)
comSocket.close()
Używając wireshark, widzę, że gniazdo jest zamknięte FIN, ACK i ACK z obu stron, nie mogę ponownie użyć portu. Otrzymuję następujący błąd:
[ERROR] Address already in use
Zastanawiam się, jak mogę od razu wyczyścić port, aby następnym razem nadal korzystać z tego samego portu.
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Program setsockopt nie jest w stanie rozwiązać problemu. Dziękujemy!