我是Python新手,现在对套接字编程很感兴趣。从youtube视频,我正在构建一个简单的服务器,但我没有很好地获得listen()
方法。我知道“它会监听”传入的连接,但我没有得到文档中“最大排队连接”的想法。你能用非专业人的术语解释这个概念,以便我能更好地理解吗?
答案 0 :(得分:3)
socket.listen
调用基础listen
syscall:
listen()
将sockfd引用的套接字标记为被动套接字,即作为套接字用于接受使用accept(2)
的传入连接请求。
被动套接字是您非正式地调用服务器的那个。
backlog参数定义sockfd的挂起连接队列可能增长的最大长度。如果在队列已满时到达连接请求,则客户端可能会收到错误并指示
ECONNREFUSED
,或者,如果基础协议支持重新传输,则可以忽略该请求,以便稍后在连接时重新尝试成功。 / p>
换句话说,当您致电sock.listen(5)
并且在致电accept
之前有6个连接请求进入时,其中一个请求被删除。在实践中,the value is only a hint to the OS。
除非您的应用程序或其使用方案非常特殊,否则传入任何值 - 经常引用5 - 并完成。只需确保在accept
次调用之间没有太多开销,并且挂起连接的队列永远不会满,并且很少首先使用。