python中的listen()方法参数

Sül*_*man 2 python sockets

我是 Python 新手,最近对套接字编程感兴趣。从 youtube 视频中,我正在构建一个简单的服务器,但我没有很好地掌握listen()方法。我知道“它会监听”传入的连接,但我没有在文档中得到“最大排队连接数”的概念。你能不能通俗地解释一下这个概念,以便我能更好地理解?

phi*_*hag 5

socket.listen在 Python 中调用底层listen系统调用

listen()将 sockfd 引用的套接字标记为被动套接字,即,将用于接受传入连接请求的套接字accept(2)

被动套接字是您非正式地称为server 的套接字。

backlog 参数定义了 sockfd 的挂起连接队列可以增长到的最大长度。如果连接请求在队列已满时到达,则客户端可能会收到错误指示,ECONNREFUSED或者,如果底层协议支持重传,则该请求可能会被忽略,以便稍后重新尝试连接成功。

换句话说,当您调用sock.listen(5)并且在调用之前有 6 个连接请求进入时accept,其中一个被丢弃。实际上,该值只是对 OS 的一个提示

除非您的应用程序或其使用场景非同寻常,否则传入任何值 - 5 通常被引用 - 并完成。只要确保在accept调用之间没有太多开销,挂起的连接队列永远不会满,而且一开始很少使用。