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 位无符号整数 ushort CHAR 字符 char LONG 32 位无符号整数 int DWORD