微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何使用TcpClient处理Nagle的算法?

我正在阅读 this thread,并在解决方案中注意到,如果您发送与实际数据分开的数据长度,Nagle的算法可能会进入播放和去同步发送的数据.

我对此感到疑惑,因为我看到很多代码示例客户端首先发送数据长度,然后发送数据本身以分离调用.这个问题不是以某种方式影响他们吗?

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

解决方法

如果您创建了一个设置了NoDelay选项的Socket,那么您将不会受到Nagle算法的影响;传递给Send的数据将立即发送.

鉴于此,在单个Send调用中传递单个字节数组会更有效,而不是单独的调用;每次调用Send都会产生数据包头的开销.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐