日期:2014-05-20  浏览次数:20946 次

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 )