C#和 C++结构体 Socket 通信最近在用 C#做一个项目的时候,Socket 发送消息的时候遇到了服务端需要接收 C++结构体的二进制数据流,这个时候就需要用 C#仿照 C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成 C#结构
1、仿照 C++结构体写出 C#的结构来using System
Runtime
InteropServices; [Serializable] // 指示可序列化 [StructLayout(LayoutKind
Sequential, Pack = 1)] // 按 1 字节对齐public struct Operator{ public ushort id; // 声明一个字符数组,大小为 11 [MarshalAs(UnmanagedType
ByValArray, SizeConst = 11)] public char[] name; [MarshalAs(UnmanagedType
ByValArray, SizeConst = 9)] public char[] pass; public Operator(string user, string pass) // 初始化 { this
id = 10000; this
name = user
PadRight(11, '\0')
ToCharArray(); this
pass = pass
PadRight(9, '\0')
ToCharArray(); }}2、注意 C#与 C++数据类型的对应关系C++与 C#的数据类型对应关系表API 数据类型类型描述C#类型WORD 16 位无符号整数ushortCHAR字符charLONG32 位无符号整数intDWORD LONG64 位长整