我可以在任何地方找到任何文档,我想知道什么是最快发送多条消息的最佳方法。
例如,如果我有300个设备从一个服务器接收消息,那么最好发送一条大消息,并让这些设备挑选出它们需要的部分,或者发送300条消息,但大小是1/300。它们只会是很小的刺,所以300个设备每个只能得到6个字节
有什么区别吗?
提前谢谢。
最佳答案
如果启用了socket的nagle算法,那么通过给定连接发送多个较小的消息通常比通过同一连接发送较少的较大消息要慢。nagle在内部缓冲出站数据,并且必须等待足够的数据被缓冲和/或超时,以便它能够发送有效的消息。对于一般的socket使用,启用nagle通常是首选的,因为它在速度、性能和大多数应用程序可以接受的开销之间提供了良好的平衡。但是如果您需要发送时间敏感的消息,那么通常必须禁用nagle,以便尽快单独发送每个消息。
但是,在TCP中,您所描述的向多个设备发送单个消息是不可能的。大概每个设备都有自己的TCP连接直接与服务器连接。要向所有300个连接发送一条消息,您必须制作300个消息的独立副本,每个连接一个。TCP没有广播功能(如果需要,请切换到UDP或多播)。发送单个服务器消息并让300个设备响应消息的唯一方法是,如果设备没有直接连接到服务器,而是通过代理进行通信,代理维护与服务器的单个连接,并根据需要将接收到的服务器消息转发到每个设备。