我正在使用 .NET 套接字制作客户端/服务器程序(它是我正在使用的系统的模型),以便于使用。一切顺利,数据全部发送;最大的问题是 char 数组。
我发送的数据包本质上是结构内的一堆双精度和一个字符数组(这是必要的/必不可少的,因为它在我正在模仿的系统上对数据包进行建模)。所有的双打都工作得很好,但是 char 数组有点棘手,因为数组需要 4 个字节/字符长。
我一直在使用编组库来处理字节数据以及 4 的 Char 数组缓冲区大小,如下所示:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public char[] tmp;
我还使用: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] 确保我的字符为 1 个字节。最终将读取我的客户端程序的服务器是用 C 语言编写的,我想确保类型对齐。
无论如何,我当前用来测试东西的服务器程序接收到数据包并且一切正常,但是当我尝试打印它以进行调试时,char 数组并没有完全按计划进行。
我有一个大字符串,我把所有的东西都放进去,像这样:
return_str += "\nChar Array (tmp) : " + str.tmp;
然后我用稍后的函数调用打印它。
打印的内容如下:
System.Char[] .
而不是我指定的 char 数组(IE、ABCD 或类似的东西)。
我指定数据包值的方式是使用带有滑块和文本框等的 Windows 窗体应用程序。就像我说的那样,双打都完美地传达了它们的值,但这是另一个问题。
我不确定这是否是编组代码的问题,或者只是我缺少 char 数组的问题。
真的可以使用一些帮助