C#/.net:通过TCP连接传输许多小数据



我有一个应用程序,需要通过TCP连接(WLAN(传输许多小(1-3Byte(消息。我知道一次发送100kB比将它们分为很小的部分(几乎按字节(发送要快得多。尽管如此,我需要传输的信息大小只有1-3字节。在发送之前收集数据会提高吞吐量,但重要的是要尽早/快速地传输少量数据。因此,在发送之前收集数据是个问题。现在我问,最好的方法是什么,一方面不单独发送每条信息,另一方面不将其传输延迟超过必要的时间。现在我正在考虑创建一个小缓冲区。当添加第一条消息时,我会启动一个超时1毫秒的计时器。在那毫秒之后,数据将被传输。与队列中的字节数无关。但我不知道这是否是一个好的解决方案。

难道.NET的TCPClient/Server类本身就没有解决这种问题的方法吗。我的意思是,他们应该知道,当前传输何时结束。同时,他们可以累积所有发送请求,并将它们作为一个事务发送出去。

TCP堆栈默认情况下已经在内部缓冲数据,以减少发送时的开销。有关详细信息,请参阅Nagle算法。只需确保启用了此算法,即将Nodelay设置为false。

最新更新