读书人

C# 写网络通信程序时怎么取得协议包的

发布时间: 2012-01-08 22:48:50 作者: rapoo

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 )

读书人网 >C#

热点推荐