python套接字如何不对连接请求进行排队

2024-04-25 17:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

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) 

对于listen(),我尝试了0和1,但在这两种情况下,一旦一个客户端连接,未来的客户端将挂起,直到第一个客户端连接。我想任何其他客户端,尝试连接失败,而不是等待。目前,我唯一能想到的就是定期检查sock并关闭任何排队的连接。有更好的办法吗?你知道吗

谢谢


Tags: 代码客户端streamsosocketlistensockaf
2条回答

使用它作为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)

这听起来可能微不足道,但: 关闭将阻止其侦听的侦听套接字!你知道吗

sock.close()

相关问题 更多 >