C# 写网络通信程序时如何取得协议包的byte[]字节数组呢?
#pragma pack(1)
typedef struct packet
{
char command_length[4];
char category[2];
char sub_command[2];
char opcode[4];
char command_status[4];
char sou_addr[6];
char des_addr[6];
char seq_no[10];
uint datalen;
char reserve[1];
}pack;
#pragma pack()
在vc中直接给packet 结构体的成员变量付值后就可以利用指针取sizeof(packet)大小的字节数组给
socket发送了,在C#中有什么针对这种协议直接装化成byte[]的方法呢?
请大侠帮忙给个代码示例,谢谢!
------解决方案--------------------string mstr = "aaa ";
byte[] mbyte = Encoding.ASCII.GetBytes(mstr);
------解决方案--------------------这个做法不行。
用指针吧,
System.Runtime.InteropServices.Marshal
public static void StructureToPtr ( System.Object structure , System.IntPtr ptr , System.Boolean fDeleteOld )
public static System.Object PtrToStructure ( System.IntPtr ptr , System.Type structureType )