Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的listen()方法参数_Python_Sockets - Fatal编程技术网

python中的listen()方法参数

python中的listen()方法参数,python,sockets,Python,Sockets,我是Python新手,最近对套接字编程很感兴趣。从youtube视频中,我正在构建一个简单的服务器,但是我没有很好地获得listen()方法。我知道“它侦听”传入的连接,但我在文档中没有“最大排队连接”的概念。你能用外行的术语解释一下这个概念吗?这样我就可以更好地理解了。在Python中,调用底层的: listen() 被动套接字是您非正式地称之为服务器的套接字 backlog参数定义sockfd的挂起连接队列可能增长到的最大长度。如果连接请求在队列已满时到达,则客户端可能会收到指示为ECONN

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

在Python中,调用底层的:

listen()

被动套接字是您非正式地称之为服务器的套接字

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

换句话说,当您调用
sock.listen(5)
并且在调用
accept
之前收到6个连接请求时,其中一个请求被丢弃。实际上


除非您的应用程序或其使用场景非常特殊,否则请传入任何值(通常引用5),然后完成。只需确保在
accept
呼叫之间不会有太多开销,挂起的连接队列永远不会满,而且一开始很少使用。

感谢您的回复。我们能把这比作许多人试图访问一个网站,但其中一些人无法访问的过程吗?例如,当我的校园里的所有人都试图访问网站注册他们的课程时,总是会发生这种情况:)是的,当接收队列开始工作时,过载是典型的情况。但是,在这种情况下,大量积压工作并没有帮助:如果服务器的负载太大而无法处理,那么扩展接收队列只会意味着管理等待的连接的负载更大。在过载情况下,您确实希望尽快终止新的传入连接,以便至少有一些查询有机会完成。