我的报文格式比如说是
public struct msg
{
public byte head;
public data[] arrData;
}public struct data
{
public byte value;
public byte quantity;
}这样的报文怎样 发送啊?
我看了很多关于TcpClient TcpListener的东西,基本上都是关于发送string的。请大家帮忙看下。。谢谢。

解决方案 »

  1.   

    序列化 或 BitConvert 或 Marshal
      

  2.   

    序列化   或   BitConvert   或   Marshal?
    能具体说说吗?
    谢谢
      

  3.   

    序列化的话势必我在client端要进行反序列化?
    BitConvert不能将自定义类型转换为Byte[]如果Marshal行。麻烦你说下方法嘛。
      

  4.   

    直接拼接成一个Byte[]数组不就行了???
    都被.NET Framework惯坏了。
      

  5.   

    用BitConvert把struct的字段一个个转byte[]拼起来.Marshal的方法
    static   byte[]   StructToBytes(object   structObj)  
      {  
      int   size   =     Marshal.SizeOf(structObj);  
      IntPtr   buffer   =   Marshal.AllocHGlobal(size);  
      try  
      {  
      Marshal.StructureToPtr(structObj,   buffer,   false);  
      byte[]   bytes   =   new   byte[size];  
      Marshal.Copy(buffer,   bytes,   0,   size);  
      return   bytes;  
      }  
      finally  
      {  
      Marshal.FreeHGlobal(buffer);  
      }  
       
      }
    -----------------
    static   object   BytesToStruct(byte[]   bytes,   Type   strcutType)  
      {  
      int   size   =     Marshal.SizeOf(strcutType);  
      IntPtr   buffer   =   Marshal.AllocHGlobal(size);  
      try  
      {  
      Marshal.Copy(bytes,   0,   buffer,   size);  
      return   Marshal.PtrToStructure(buffer,   strcutType);  
      }  
      finally  
      {  
      Marshal.FreeHGlobal(buffer);  
      }  
      }
      

  6.   

    从效率和通用性的角度讲我建议用BitConvert
      

  7.   

    同意 路西菲尔,但是什么是Marshal啊?