我正在使用套接字编程在 python 中创建一个简单的聊天应用程序,我需要我的套接字接受无限数量的连接,不像这个限制为 100 的“socket.listen(100)”。请解释我应该怎么做才能处理大连接数量?

最佳答案

listen() 给出的数字是积压队列的大小 - 提示 表示待处理请求的数量,而不是事件请求的数量。

您经常会看到用于 backlog 参数的 5 值 - 这是历史记录。伯克利套接字的早期版本有一个“特性”,即任何大于 5 的值都会给出 5。所以它是 5。这是很久以前修复的,但它仍然不是您需要过多担心的数字 - 请记住,这只是一个提示。

如果超过了 backlog,给客户端的实际错误通常是 catch-all ECONNREFUSED,但旧系统曾经有一个特定的 backlog 错误。

在许多系统上,backlog 被静默地截断为 SOMAXCONN

另见 listen() ignores the backlog argument?

关于python - 接受与套接字的无限连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41595176/

10-12 16:51