处理大量客户端:UDP还是TCP?

时间:2014-04-01 21:31:11

标签: java networking tcp udp

我想创建一个所有客户端都可以连接的通信服务器。我唯一的问题是决定是使用TCP还是UDP。我希望能够同时处理数百个客户端(500 - 1000),每个客户端都有自己的线程来处理它们。 TCP或UDP是否能够做到这一点,如果是这样,哪一个适合我的需要?如果有人对更好的方式处理大量客户有任何想法,请告诉我。感谢。

编辑:服务器基本上是一个消息通信服务器。因此,所有游戏服务器(客户端)都可以向其发送消息,并将其广播到所有其他游戏服务器(客户端)。我希望所有的消息传递都尽可能可靠。

2 个答案:

答案 0 :(得分:1)

TCP和UDP都可以执行此操作。您使用哪一个取决于您是否需要不可靠的数据报或可靠的流。只有你知道,但几乎可以肯定你应该使用TCP,

答案 1 :(得分:0)

这里有三个主要考虑因素。

首先,您需要自己制作这样的服务器吗?有许多产品(大多数免费和开源)可以完成你所描述的内容:KafkaRedisZeroMQRabbitMQ,那就是刚开始。如果您想制作一些游戏或其他应用程序,那么请抓住其中一个并花时间在真实应用程序上工作。

其次,您是否需要可靠的沟通渠道?如果是这样,你想要TCP。如果没有,那么你想要UDP。不要担心哪个更快。使用符合您需求的那个。另外......如果你不确定你需要UDP,那么你肯定想要TCP。

最后,在尝试扩展入站网络连接时,最大的杠杆是同步与异步I / O.使用前者,每个入站连接需要一个线程/进程,并且您将快速完成计算机上的资源。使用后者,您可以使用单个线程处理几乎所有内容,并扩展得更大。比较像Ruby on Rails和Node.js这样的特定示例。