在有许多客户端的服务器中使用一个端口还是使用多个端口?

using one port vs many in server with many clients?

我正在用 C# 编写服务器代码,我认为用一个端口为所有客户端(在我的梦想中说数百万个)服​​务是否好(甚至可能),或者最好使用例如 1000端口并为每个客户端使用较少使用的端口或随机端口!性能影响是什么?

为不同的客户端使用多个端口通常是错误的方法。

端口是一种有限的资源,因此您需要对其进行管理。
最多有 65,535 个,您应该只使用 1024 和 49,151 之间的端口。 参见 https://en.wikipedia.org/wiki/Registered_port

从管理的角度来看,它们也并非没有开销。想想防火墙、代理、负载平衡器、路由等。如果你有一个使用多个端口的应用程序,那么它需要为这些类型的应用程序配置所有这些,(这也会增加安全风险)并冒着与另一个应用程序发生冲突的风险碰巧在特定服务器上使用相同的端口。

此外,端口根本不是性能限制。

如果遇到性能瓶颈,则需要更改代码或使用负载均衡器将负载分配到同一主机或多个主机上的应用程序的多个实例。

如果你仔细想想,世界上所有的网络服务器都使用端口 80(至少在外部)。因此,如果 Google 搜索、Facebook、Instagram 等可以在单个端口上处理此类负载,那么我相信您的简单应用程序也可以管理它!

您可以将不同的端口用于不同的目的,包括不同的协议,这是公认的做法。