请教: C# Socket 编程应该如何传输一个结构体?
最近开发的一个项目中需要用UDP编程访问远程服务器, 服务器接收及回复的数据均为一个C++ 结构体:
typedef struct COMM_STRUCT
{
int MessageCode;
int DataSize;
char Data[256];
} COMM_TYPE;
我已在C#项目中实现了这个结构:
public struct COMM_STRUCT
{
public int MessageCode;
public int DataSize;
public char[] Data;
};
现在问题是:我该如何在Socket编程中传输结构体实例啊? Socket 中传输的数据应该是二进制流(byte[])吧, 怎样可以对结构与byte[]进行互转呢?盼大家指教!
------解决方案--------------------把结构体序列化成字节数组,然后用UDP发送就行了
------解决方案--------------------你可以把这个结构体改用类代替,然后用
public System.IO.MemoryStream SerializeBinary(object request)
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memStream = new System.IO.MemoryStream();
serializer.Serialize(memStream, request);
return memStream;
}
这个函数把这个类转换成内存流
最把把返回的内存流转换成SerializeBinary(结构体或类对象).ToArray()字节数组,然后就可以用UDP发送了!
------解决方案--------------------对
------解决方案--------------------发送时把结构序列成字符串。接收时分解。
------解决方案--------------------序列化與反序列化呀