2014-04-01 75 views
0

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

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

+0

你发送了什么信息?你关心国家吗?你关心可能会丢失一些数据包吗? – admdrew

+0

由于您不关心绩效(“*每个人都有自己的线程来处理他们*”),只需使用您最了解的人。 –

回答

1

TCP和UDP都可以做到这一点。你使用哪一个取决于你是否想要不可靠的数据报或可靠的数据流。只有你知道,但几乎可以肯定你应该使用TCP,

0

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

首先,你需要自己制造这样的服务器吗?有很多产品(大多数免费和开放源代码)可以完成您所描述的几乎所有功能:Kafka,RedisZeroMQ,RabbitMQ,这就是开始。如果您想要制作某个游戏或其他应用程序,请抓住其中一个应用程序,并将时间花在实际应用程序上。

二,您是否需要一个可靠的沟通渠道?如果是这样,你想要TCP。如果不是,那么你想要UDP。不要担心哪个更快。使用适合您需求的产品。另外...如果你不是110%确定你需要UDP,那么你一定想要TCP。

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