我用 C# 制作了一个客户端,我想在 Linux 下用 C 语言构建一个服务器。
我为每个“消息”使用带有“消息”长度的前缀。byte[]
我使用BitConverter.GetBytes()
(4字节数组)将其编码为数组。之后我发送它
socket.Send(prefix, prefix.Length, 0);
Linux 上的 C 服务器无法读取数字。它显示了一个奇怪的字符,尽管它读取了 4 个字节。
Linux端看起来像
char prefix[4];
int bytes = 0;
bytes = recv(s, prefix, 4, 0);
printf("%s", prefix);
如果我使用 对数字进行编码Encoding.UTF8.GetBytes()
,Linux 可以正确理解它。
我对其进行了测试,看来问题仅在于程序以这两种不同的语言编码时。
这是怎么回事?