我有一個關於TCP/IP網絡上的客戶端套接字的問題。比方說,我用Python:綁定套接字:「地址已在使用」
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()
使用Wireshark的後,我看到FIN,ACK和ACK關閉套接字從雙方我都不能再使用這個端口。我收到以下錯誤:
[ERROR] Address already in use
我想知道我該如何清除端口,以便下次我仍然可以使用相同的端口。
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
setsockopt的似乎並不能夠解決問題 謝謝!
爲什麼客戶端需要特定的端口? – 2011-06-17 00:17:29
因爲我必須將其放入生產服務器,並在該服務器中,所有傳出連接都被阻止。我需要爲套接字指定一個特定的端口,以便他們可以在防火牆上設置一條規則,允許連接通過。 – 2011-06-17 00:46:31
我建議你複製並粘貼實際的代碼。你上面寫的有一個明顯的錯誤,會阻止你看到你聲稱已經看到的行爲。這讓讀者不知道你有什麼疏忽告訴我們可能會導致你的問題。 – 2011-06-17 01:01:06