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

本文关键字:顺序 Networkstream 数据包 如果 | 更新日期: 2023-09-27 17:58:23

当前,我正在编写一个使用TcpListener/TcpClient的客户端/服务器应用程序。我看到过类似的问题和类似的答案,但我看到了相互矛盾的答案,我想用一个直接涉及本次调查的问题来澄清。那么,如果我将字节写入客户端的底层NetworkStream,字节"组"(即,如果我在客户端调用NetworkStream.write()两次)会按照客户端写入字节的顺序到达服务器吗?例如,如果我这样做:

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

stream.read()是否总是先读取"hi"的字节数组,或者是否有可能先读取"再见"?(我在消息头中定义每条消息的长度,所以知道每条消息有多长不是问题。)

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

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