当前位置: 首页 > 编程语言 > C#

如何在不关闭Stream或TcpClient的情况下保证NetworkStream立即发送数据?分享

时间:2023-04-10 22:58:05 C#

不关闭Stream或TcpClient,如何保证NetworkStream立即发送数据?我有一个非常简单的代码片段,它试图通过TcpClient及其关联的NetworkStream发送数据。varclient=newTcpClient("xxx.xxx.xxx.xxx",1234);NetworkStream流=client.GetStream();byte[]buffer=Encoding.ASCII.GetBytes(str);stream.Write(buffer,0,buffer.Length);我发现通常不会在stream.Write()之后立即发送数据。如果我添加stream.Close()client.Close()或stream.Close()则将发送数据。但是,在我的例子中,我试图等待服务器发送一些ACK消息,所以我想在不关闭TcpClient或NetworkStream的情况下重用原始NetworkStream。如何才能做到这一点?将TcpClient.NoDelay设置为true以不使用Nagle算法。来自MSDNLibrary文档:当NoDelay为false时,TcpClient在收集到大量传出数据之前不会通过网络发送数据包。由于TCP段中的开销量,发送少量数据效率低下。但是,确实存在您需要发送非常少量的数据或期望您发送的每个数据包立即响应的情况。您的决定应该权衡网络效率与应用程序要求的相对重要性。以上就是C#学习教程:如何保证NetworkStream在不关闭Stream或TcpClient的情况下立即发送数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: