如何用TcpClient处理Nagle's算法

本文关键字:算法 Nagle 何用 TcpClient 处理 | 更新日期: 2023-09-27 18:09:10

我正在阅读这个线程,并注意到在解决方案中,如果你发送数据的长度与实际数据分开,Nagle的算法可能会进来播放和设计发送的数据。

我对此感到疑惑,因为我看到客户端首先发送数据的长度,然后将数据本身作为单独的调用。难道这个问题没有影响到他们吗?

我应该将数据的长度和数据本身连接到一个单字节数组中并一次性发送吗?如果是这样,有没有更好的方法来连接两个字节数组,而无需手动将所有数据从两个(循环)复制到新的?对于经常发生的事情(每次用户或服务器在彼此之间发送数据)来说,这似乎非常低效。

如何用TcpClient处理Nagle's算法

如果您创建的Socket具有NoDelay选项集,那么您将不会受到Nagle算法的影响;传递给Send的数据将立即发送。

考虑到这一点,在单个Send调用中传递单个字节数组会更有效,而不是单独调用;

Send的每次调用都有一个数据包头的开销。