【问题标题】:multiple UDP ports多个UDP端口
【发布时间】:2011-03-02 03:02:06
【问题描述】:

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

我有两个选择(我认为)

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

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

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

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

使用上述方法有没有性能问题

或者这里有什么有效的方法可以用 C 处理这种类型的任务吗?

谢谢,

拉古

【问题讨论】:

    标签: udp


    【解决方案1】:

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

    因此,“Single Socket”会更有效率。但是您也可以使用异步 API 仅在单个线程中使用“Multipe Sokets”。如果您可以使用包的有效负载识别客户端,则无需为每个客户端设置一个端口。

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 2020-09-22
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      相关资源
      最近更新 更多