python中的listen()方法参数

时间:2018-01-13 21:08:26

标签: python sockets

我是Python新手,现在对套接字编程很感兴趣。从youtube视频,我正在构建一个简单的服务器,但我没有很好地获得listen()方法。我知道“它会监听”传入的连接,但我没有得到文档中“最大排队连接”的想法。你能用非专业人的术语解释这个概念,以便我能更好地理解吗?

1 个答案:

答案 0 :(得分:3)

Python中的

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次调用之间没有太多开销,并且挂起连接的队列永远不会满,并且很少首先使用。