在套接字上产生超过5个客户端请求

时间:2013-12-08 15:20:37

标签: python sockets

如果我们绑定这样的服务器套接字:

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
server.bind((host,port)) 
server.listen(5) 

并使用select()之类的东西并遍历每个客户端连接,直到客户端关闭它以交换消息,同时循环( for 此处)同时运行我们可以进行服务器的交换-client消息或客户端 - 客户端交换并发。我们可以吗?

但我读过的问题是服务器无法将超过5个客户端排入队列中逐个处理;

实际运行多个此类服务器实例的方法有哪些,前提是有多个此类服务器进程开始侦听,如果排队的客户端达到5级?

3 个答案:

答案 0 :(得分:2)

当您收到连接时,您可以生成一个线程/进程来处理该连接。

在主线程上返回以侦听另一个连接

5位是一次保持的列表长度。

类似于总机操作员

答案 1 :(得分:1)

可能你误解了积压参数的功能。 限制5仅适用于尚未接受的连接。

答案 2 :(得分:1)

您关注的5个限制是侦听器积压队列的大小。这是系统暂停多少连接,直到它开始拒绝新连接。当accept在该队列上释放连接空间时。因此,只要您及时接受您的连接,在正常负载条件下这不是真正的问题。 (顺便说一句,BTW 5是偏低的。例如,IIR是linux上每个进程的默认最大值,为128.)