我正在使用Python构建套接字服务器。
此服务器
除非客户端不连续同时发送数据,否则此系统工作正常。例如,假设服务器需要5秒钟来处理数据,而客户端每10秒钟发送一次数据。然而,问题是客户端一次发送多个请求,从而导致延迟。目前,客户端无法向服务器发送数据,除非服务器已准备好接收数据,这意味着服务器没有做任何工作。以下是我想要构建的内容。
我的问题如下。
提前致谢
最佳
吉
答案 0 :(得分:1)
是的,这样的事情可行。
首先,您需要一个线程来接收和发送数据。如果您的客户端数量有限,则可以为每个客户端创建一个线程,但对于一个或多或少强大的系统而言,它不是一个选项。为了能够在单个线程中为多个客户端提供服务,套接字应该是 nonblocking 。否则,一个长传输将阻止其他传输。非阻塞代码具有使用select
的更复杂的结构,因此我建议花一些时间阅读它。
然后你需要一个线程来做数学运算。或者如果“数学”需要很长时间才能执行,可以使用几个线程/进程。
最后但并非最不重要的是,这些套接字线程和“数学”线程应该使用两个队列来交换数据。简单的lists
就足够了,但要确保它们同步。用互斥锁或锁来保护它们。这是另一个值得一读的大话题。