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

请教: 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发送了!
------解决方案--------------------




------解决方案--------------------
发送时把结构序列成字符串。接收时分解。
------解决方案--------------------
序列化與反序列化呀