C# 如何应对纳格尔';带TcpClient的s算法?
我正在阅读并注意到,在解决方案中,如果将数据的长度与实际数据分开发送,则Nagle的算法可能会播放并去同步发送的数据 我想知道这一点,因为我看到很多代码示例,客户机首先发送数据的长度,然后发送数据本身作为单独的调用。这个问题对他们没有影响吗C# 如何应对纳格尔';带TcpClient的s算法?,c#,tcpclient,C#,Tcpclient,我正在阅读并注意到,在解决方案中,如果将数据的长度与实际数据分开发送,则Nagle的算法可能会播放并去同步发送的数据 我想知道这一点,因为我看到很多代码示例,客户机首先发送数据的长度,然后发送数据本身作为单独的调用。这个问题对他们没有影响吗 我是否应该将数据的长度和数据本身连接到一个单字节数组中,并一次性发送?如果是这样,有没有更好的方法连接两个字节数组,而不必手动将两个(循环)中的所有数据复制到新的数组中?对于经常发生的事情(每次用户或服务器彼此之间发送数据时),似乎效率很低。如果您使用节点延
我是否应该将数据的长度和数据本身连接到一个单字节数组中,并一次性发送?如果是这样,有没有更好的方法连接两个字节数组,而不必手动将两个(循环)中的所有数据复制到新的数组中?对于经常发生的事情(每次用户或服务器彼此之间发送数据时),似乎效率很低。如果您使用
节点延迟
选项集创建了套接字
,那么您就不会受到Nagle算法的影响;传递到Send
的数据将立即发送
有鉴于此,在单个Send
调用中传递单字节数组比单独调用更有效;对Send
的每次调用都会有一个数据包头的开销