2015-06-14 80 views
1

這是我的代碼有:蟒蛇插座怎麼不排隊的連接請求

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
sock.setblocking(0) 
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 
sock.bind(('localhost',self._lp)) 
sock.listen(0) 

的聽(),我已經嘗試了0和1,但在這兩種情況下,一旦一個客戶端連接,未來的客戶將掛起直到第一次連接。我希望所有嘗試連接的客戶端都失敗而不是等待。目前,我唯一能想到的就是定期檢查襪子並關閉排隊的連接。有沒有更好的辦法?

感謝

回答

2

這聽起來微不足道,但: 關閉監聽套接字 - 將從收聽阻止它!

sock.close() 
0

使用它作爲一個context manager使用後自動關閉。

# Note that the arguments were removed -- they were already the defaults 
with socket.socket() as sock: 
    sock.setblocking(0) 
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    sock.bind(("localhost", self._lp)) 
    sock.listen(0)