Python: Binding Socket: «Адрес уже используется»

У меня вопрос относительно клиентского сокета в сети TCP / IP. Давайте. скажем, я использую

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)

Созданный сокет будет привязан к порту 5555. Проблема в том, что после завершения соединения

comSocket.shutdown(1)
comSocket.close()

с помощью wirehark я вижу, что сокет закрыт с помощью FIN, ACK и ACK с обеих сторон, я не могу использовать порт снова. Я получаю следующую ошибку:

[ERROR] Address already in use

Интересно, как мне очистить порт сразу, чтобы в следующий раз я мог использовать тот же порт.

comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

setsockopt, похоже, не может решить проблему Спасибо!

66
задан Tu Hoang 31 December 2013 в 19:49
поделиться