1

我正在开发 udp 服务器/cient 应用程序。我希望我的服务器一次能够处理 40 个客户端。现在我使用的方法是创建一个连续接收数据的接收线程和一个发送数据的发送线程(如果需要)。由于套接字队列足够大,可以缓冲来自 40 个客户端的数据,所以我只使用一个接收线程。实现这种单服务器多客户端应用程序的其他可能方法是什么?

4

1 回答 1

2

您当然可以运行多个服务器线程,但每个线程都必须侦听不同的 UDP 端口。如果这对您来说没问题,请尝试多个线程,但不要超过您拥有的处理器内核数。由于线程切换,除此之外的任何事情都会减慢整个过程。

您可以尝试的另一件事是将服务器进程的优先级设置为实时。UDP 数据包是易变的——如果你捕捉它们的速度太慢,它们就会消失。但是,这种高优先级带来了风险:如果您的服务器没有正确编写,它可能会消耗 100% 的 CPU 并且渲染系统实际上会挂起。它也不应该让 CPU 的其他进程饿死,但同样,如果它写得很好,例如不使用Thread.Sleep

但是,如果您的系统在最大负载下可以在当前设计下正常工作,那么您可以进行测试,那么最好的办法就是什么都不做。

于 2013-04-15T11:58:44.433 回答