【发布时间】:2020-06-13 00:06:06
【问题描述】:
我有一个应用程序需要通过 TCP 连接 (WLAN) 传输许多小(1-3 字节)消息。 我知道一次发送 100kB 比发送非常小的块(几乎按字节)要快得多。 尽管如此,我需要传输的信息只有 1-3 字节大小。在发送之前收集数据会增加吞吐量,但重要的是尽可能早/快地传输小块数据。所以在发送之前收集数据是个问题。 现在我问,最好的方法是什么,一方面不要单独发送每条消息,另一方面不要延迟它们的传输时间超过必要的时间。 现在我正在考虑创建一个小缓冲区。添加第一条消息时,我启动一个超时时间为 1 毫秒的计时器。在那一毫秒之后,数据将被传输。与队列中有多少字节无关。但我不知道这是否是一个好的解决方案。
.NET 的 TCPClient/Server 类本身是否有解决此类问题的方法。我的意思是,他们应该知道当前传输何时结束。同时,他们可以累积所有发送请求,并像在一个事务中一样将它们发送出去。
【问题讨论】:
-
这只是
NoDelay = true,确定吗?