2012-03-11 40 views
2

我可以在任何地方找到任何documentatin,并且想知道什么是尽可能快地发送多个消息的最佳方法。使用TCP套接字可以更快地发送多个小消息或更少的消息

例如,如果我有300台设备从一台服务器接收消息,发送一条大消息并让设备挑选出他们需要的部件或发送300条消息,但尺寸只有1/300,会更好。它们只会是小刺,所以300个恶魔每个只能得到6个字节

它有什么区别?

谢谢先进。

+1

当你说“一个大消息”,用TCP你需要发送这个“一个大消息”*每个*设备单独。使用TCP时不能广播消息(但可以使用UDP)。 – 2012-03-11 01:09:09

回答

1

如果套接字的Nagle算法已启用,那么通过给定连接发送多个较小的消息通常比在同一连接上发送较少的较大消息要慢。 Nagle在内部缓冲出站数据,并且必须等待足够的数据被缓存和/或超时,以便它可以发送有效的消息。对于一般的套接字使用,启用Nagle通常是首选,因为它提供了大多数应用程序都能接受的速度,性能和开销之间的良好平衡。但是,如果您需要发送时间敏感的消息,那么您通常必须禁用Nagle,因此每条消息都会尽快单独传输。但是,您描述的有关将单个消息发送到多个设备的描述对于TCP来说是不可能的。推测这些设备每个都有自己的与服务器直接连接的TCP连接。要发送一条消息到所有300个连接,您必须制作300个独立的消息副本,每个连接一个。 TCP没有广播功能(如果需要,可切换到UDP或多播)。发送单个服务器消息并且有300个设备响应它的唯一方式是如果设备没有直接连接到服务器,而是通过代理进行通信,该代理与服务器保持单一连接并将接收到的服务器消息转发给每个服务器消息设备根据需要。

+0

这听起来像他有300个连接,但希望广播所有连接上的数据与每个连接独有的单个消息。这听起来对我来说毫无意义,因为你会将发送的数据乘以一个数量级! – fido 2012-03-11 01:24:42

+0

我在想广播。我以为你可以用TCP来完成,但我想我不得不查看UDP,如果我不发送单个消息。我希望尽可能快地接收消息,这样每个人都可以在几乎实时的时间内接收消息,而不会有太多延迟 – NickREd 2012-03-11 13:35:52

相关问题