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

C# 如果我通过Networkstream发送多个数据包,它们会以相同的顺序到达吗?,c#,networkstream,C#,Networkstream,目前,我正在编写一个使用TcpListener/TcpClient的客户机/服务器应用程序。我看到过类似的问题和类似的答案,但我也看到过相互矛盾的答案,我想用一个直接涉及这项调查的问题来澄清。因此,如果我将字节写入客户端的底层NetworkStream,字节“组”(即,如果我在客户端调用NetworkStream.write()两次)是否会以客户端写入它们的相同顺序到达服务器?例如,如果我这样做: stream.write(System.Text.Encoding.ASCII.GetBytes(

目前,我正在编写一个使用
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,但TCP以原始发送顺序发送这些消息-许多系统强烈依赖于此。

TCP是一种流式协议,可确保按顺序发送。顺序保持,分组不是。NetworkStream仅用于处理流协议。它取决于底层协议(在本例中为TCP),因此实际上没有任何变化。:)