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

If I send multiple packets over Networkstream, will they all arrive in the same order?

目前,我正在编写一个使用 TcpListener/TcpClient 的 client/server 应用程序。我见过类似的问题和类似的答案,但我看到了相互矛盾的答案,想用一个直接处理这个问题的问题来澄清。因此,如果我将字节写入客户端的底层 NetworkStream,字节 "groups"(即,如果我在客户端调用 NetworkStream.write() 两次)是否会以与客户端相同的顺序到达服务器写他们?例如,如果我这样做:

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

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

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