繁体   English   中英

客户端 - 服务器模型的Python套接字支持/线程

[英]Python socket support/threading for client-server model

所以,我正在尝试编写一个非常简单的客户端 - 服务器系统,它对UDP进行一些拥塞控制。 简单地说,服务器发送数据包并从客户端接收反馈包。 我对此很新,我不确定:

(1)可以将多少用户连接到同一个插槽?

(2)多个用户可以同时使用套接字(也可以并行读/写)吗?

(3)我需要使用线程,以便每个用户可以向它们发送数据包并从它们并行接收反馈包。 我在另一篇文章中读到,不应该为每个用户打开线程(我每个用户打开两个线程)。 这样做我错了吗? 我是否有固有的误解? 有没有人建议如何处理这个?

对不起,我对此很新。

(1)插座的连接数量受操作系统的限制,但最高可达100k以上,检查C10K问题

(2)套接字可以由多个线程使用,甚至可以使用预分叉方法使用多个进程

(3)您可以为每个连接使用一个新线程,但最好的方法是使用线程池,或者您可以使用异步方法并避免使用线程

根据socket.listen()的文档:

侦听对套接字的连接。 backlog参数指定排队连接的最大数量,并且应该至少为0; 最大值取决于系统(通常为5),最小值强制为0。

所以从技术上来说,请求不是并行处理而是排队,直到通常的最大值为5.我不知道你提到的帖子的作者必须声明你不应该为每个用户启动一个线程的原因,但是我已经读过大多数服务器每个请求使用一个线程。 线程池也是一种常见模式,可以使用像Queue 这样的同步对象轻松实现(如果你想看一个小实现, 这个例子可能很有用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM