如何使用c#将big-endian发送到网络流

本文关键字:网络 big-endian 何使用 | 更新日期: 2023-09-27 18:26:17

我尝试通过sslStream传输带有套接字的文件数据。似乎我必须在发送数据之前先发送文件数据长度。问题是代码

Byte [] size = BitConverter.GetBytes(fileData.Length)

以小端序返回,但互联网协议使用的是大端序。

如何将其转换为big-endian并将其写入流;

如何使用c#将big-endian发送到网络流

我假设您只想发送一个int值。在传输之前,字节的顺序应该颠倒:

byte[] bytes = BitConverter.GetBytes(fileData.Length);
if (BitConverter.IsLittleEndian)
     Array.Reverse(bytes); 

查看此MSDN页面以获取有关BitConverted的详细信息。

您也可以使用HostToNetworkOrder进行转换,例如:

int reversed = IPAddress.HostToNetworkOrder(fileData.Length);
byte[] bytes = BitConverter.GetBytes(reversed);

要发送这些字节,请使用Write方法:

stream.Write(bytes, 0, bytes.Length);