1

我想创建一个简单的视频流(实际上是图像流)服务器,可以管理不同的协议(TCP Push/Pull,UDP Push/Pull/Multicast)。

我设法让 TCP Push/Pull 与SocketServer.TCPServer该类一起工作,并ThreadinMixIn在不同的线程中处理每个连接的客户端。

但是现在我正在研究 UDP 协议,我刚刚意识到 ThreadinMixIn 每次调用handle()每个客户端查询都会创建一个线程(因为在 UDP 中没有诸如“连接”之类的东西)。

问题是我需要为所有客户端处理同一客户端的一系列查询。我怎么能做到这一点?

我看到我可以处理的唯一方法是拥有一个(客户端地址,处理线程)列表并将每个查询发送到匹配的线程(或者如果客户端尚未发送任何线程,则创建一个新的)。有没有更简单的方法来做到这一点?

谢谢 !

PS:我不能为此使用任何外部或过于“高级”的库,因为它是一门旨在了解套接字如何工作的学校科目。

4

1 回答 1

-1

看看Twisted。这将消除从您的应用程序中执行任何线程调度的需要。您仍然必须将数据包与特定会话匹配才能处理它们,但这并不困难(为每个客户端使用一个端口并基于该端口进行调度,或者要求会话中的数据包始终来自同一地址并且使用对等地址,或使用解决此问题的现有协议之一,例如 SIP)。

于 2012-12-06T13:31:32.350 回答