c# - 如何使用 C# 将大端发送到网络流

标签 c# tcp endianness

我尝试通过 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/

相关文章:

python - 如何使用 Python 脚本检查特定端口是否正在监听?

c++ - 如何在 C++ 中表示二进制字节数组数据?

c# - C# 中的 Cast 删除实现的成员数组

c# - 在 Excel 2003 中调整编辑栏的大小

ruby-on-rails - ActionView::Template::Error(无法打开到本地主机的 TCP 连接:9292(连接被拒绝 - 连接(2)用于 "localhost"端口 9292))

python - 将套接字与 wxpython 一起使用

java - 以小端方式将 float 写入文件?

java - 从Python服务器到Android客户端的图像数据丢失(Endian问题??)

c# - 在 asp.net 应用程序中启用 c# 7

c# - 如何检测 Windows 开始菜单/开始屏幕何时打开?