多个UDP端口

时间:2010-06-10 11:15:30

标签: udp

我的情况是我必须在服务器中处理多个实时UDP流。

我有两个选择(我认为)

单插座: 1)监听服务器上的单个端口,并从同一端口上的所有客户端接收数据,并为每个客户端创建线程以处理数据,直到客户端停止发送。 这里只有一个端口用于接收数据和用于处理数据的线程数。

多个套接字: 2)客户端将从服务器请求开放端口发送数据,应用程序将开放端口发送到客户端并打开一个新的线程监听端口以接收和处理数据。这里的每个客户端都有唯一的端口发送数据。

我已经实现了一种方法来了解哪个数据包来自UDP中的哪个客户端。

我收到的每秒有1000多个客户端和60KB数据。

使用上述方法是否存在任何性能问题

或者这里有什么有效的方法来处理C中的这类任务吗?

谢谢,

Raghu

1 个答案:

答案 0 :(得分:0)

对于那么多客户端,每个客户端有一个线程的效率非常低,因为必须执行大量的上下文切换。 此外,每个IP可以打开的端口数量是有限的(端口是16位数字)。

因此“单插座”效率会更高。但您也可以使用异步API在单个线程中使用“Multipe Sokets”。如果您可以使用软件包的有效负载识别客户端,则不需要为每个客户端提供端口。