如果我通过Networkstream发送多个数据包,它们是否会以相同的顺序到达?

时间:2016-07-24 22:34:06

标签: c# networkstream

目前,我正在编写使用TcpListener / TcpClient的客户端/服务器应用程序。我已经看到了类似答案的类似问题,但我看到了相互矛盾的答案,并希望通过直接处理此调查的问题进行澄清。因此,如果我将字节写入客户端的基础NetworkStream,那么字节“组”(即如果我在客户端调用NetworkStream.write()两次)将以客户端编写它们的相同顺序到达服务器?例如,如果我这样做:

stream.write(System.Text.Encoding.ASCII.GetBytes("hi"));
stream.write(System.Text.Encoding.ASCII.GetBytes("goodbye"));

stream.read()是否总是首先得到“hi”的字节数组,或者是否有某种机会首先读取“goodbye”? (我在消息头中定义每条消息的长度,因此知道每条消息的长度不是问题。)

1 个答案:

答案 0 :(得分:2)

我不熟悉NetworkStream,但TCP以发送的原始顺序传递这些消息 - 许多系统都非常依赖于此。