2015-06-14 77 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)