第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共7页C#和C++结构体Socket通信最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构
1、仿照C++结构体写出C#的结构来usingSystem
Runtime
InteropServices;[Serializable]//指示可序列化[StructLayout(LayoutKind
Sequential,Pack=1)]//按1字节对齐publicstructOperator{publicushortid;//声明一个字符数组,大小为11[MarshalAs(UnmanagedType
ByValArray,SizeConst=11)]publicchar[]name;[MarshalAs(UnmanagedType
ByValArray,SizeConst=9)]publicchar[]pass;publicOperator(stringuser,stringpass)//初始化{this
id=10000;this
name=user
PadRight(11,'\0')
ToCharArray();this
pass=pass
PadRight(9,'\0')
ToCharArray();}}2、注意C#与C++数据类型的对应关系C++与C#的数据类型对应关系表API数据类型类型描述C#类型WORD16位无符号整数ushort第2页共7页第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共7页CHAR字符charLONG32位