我尝试通过 sslStream 使用套接字传输文件数据。看来我必须在数据之前发送文件数据长度。问题是代码
Byte [] size = BitConverter.GetBytes(fileData.Length)
以小端方式返回,但互联网协议(protocol)使用大端方式。
如何将其转换为大端字节序并将其写入流;
最佳答案
我假设您只想发送一个 int
值。传输前应颠倒字节顺序:
byte[] bytes = BitConverter.GetBytes(fileData.Length);
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
检查this MSDN page获取有关 BitConverted
的更多信息。
您还可以使用 HostToNetworkOrder
进行转换,例如:
int reversed = IPAddress.HostToNetworkOrder(fileData.Length);
byte[] bytes = BitConverter.GetBytes(reversed);
要发送这些字节,请使用 Write
方法:
stream.Write(bytes, 0, bytes.Length);
关于c# - 如何使用 C# 将大端发送到网络流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202008/