python中的listen()方法参数
我是Python新手,最近对套接字编程很感兴趣。从youtube视频中,我正在构建一个简单的服务器,但是我没有很好地获得python中的listen()方法参数,python,sockets,Python,Sockets,我是Python新手,最近对套接字编程很感兴趣。从youtube视频中,我正在构建一个简单的服务器,但是我没有很好地获得listen()方法。我知道“它侦听”传入的连接,但我在文档中没有“最大排队连接”的概念。你能用外行的术语解释一下这个概念吗?这样我就可以更好地理解了。在Python中,调用底层的: listen() 被动套接字是您非正式地称之为服务器的套接字 backlog参数定义sockfd的挂起连接队列可能增长到的最大长度。如果连接请求在队列已满时到达,则客户端可能会收到指示为ECONN
listen()
方法。我知道“它侦听”传入的连接,但我在文档中没有“最大排队连接”的概念。你能用外行的术语解释一下这个概念吗?这样我就可以更好地理解了。在Python中,调用底层的:
listen()
被动套接字是您非正式地称之为服务器的套接字
backlog参数定义sockfd的挂起连接队列可能增长到的最大长度。如果连接请求在队列已满时到达,则客户端可能会收到指示为ECONNREFUSED
的错误,或者,如果基础协议支持重新传输,则可以忽略该请求,以便稍后在连接时重新尝试成功
换句话说,当您调用sock.listen(5)
并且在调用accept
之前收到6个连接请求时,其中一个请求被丢弃。实际上
除非您的应用程序或其使用场景非常特殊,否则请传入任何值(通常引用5),然后完成。只需确保在accept
呼叫之间不会有太多开销,挂起的连接队列永远不会满,而且一开始很少使用。感谢您的回复。我们能把这比作许多人试图访问一个网站,但其中一些人无法访问的过程吗?例如,当我的校园里的所有人都试图访问网站注册他们的课程时,总是会发生这种情况:)是的,当接收队列开始工作时,过载是典型的情况。但是,在这种情况下,大量积压工作并没有帮助:如果服务器的负载太大而无法处理,那么扩展接收队列只会意味着管理等待的连接的负载更大。在过载情况下,您确实希望尽快终止新的传入连接,以便至少有一些查询有机会完成。