2014-04-22 27 views
1


我在我的python程序中使用一個端口並關閉它,現在我想再次使用它。只是該端口不是另一個端口。
有什麼辦法強制操作系統與python自由港?如何強制操作系統自由端口與python

#!/usr/bin/python   # This is server.py file 

import socket    # Import socket module 

s = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
port = 12349 
portt = 12341    # Reserve a port for your service. 

s.bind((host, portt))  # Bind to the port 

s.connect((host, port)) 
s.close 

ss = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
ss.bind((host, portt)) 

s.close 

但輸出是:

Traceback (most recent call last): 
    File "client.py", line 17, in <module> 
    ss.bind((host, portt)) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 98] Address already in use 
+2

's.close'是一種方法。你可以通過's.close()'調用它,否則只顯示關於方法類型的信息。 – njzk2

回答

1

你將永遠無法迫使OS(用任何一種合理的努力),以釋放插槽。

相反,你只是想說你不setsockopt

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

關心這意味着選擇發生在小號 OCKET Ø bject 大號埃維爾SOCKET(相對於TCP或其他東西),並且你正在設置REUSEADDR(你告訴操作系統它沒問題,你真的想在這裏聽)。最後,您打開1選項,而不是關閉(使用0)。