struct ClientData                          //客户端数据包,该数据包和网关程序相对应
    {
        public int Command;                    //命令码
        public int Data;                       //整型命令数据
        public char[] Data1;                   //数据包1
        public char[] Data2;                   //数据包2
        public char[] Data3;                   //数据包3
    }
怎样用socket 发送和接受该数据包 并且数据内容的顺序不能改变 

解决方案 »

  1.   

    最终需要转换成byte[]的数组,至于怎么转换,好像是需要进行序列化了,但是没有必要设计成这样吧,为什么不设计成
    struct ClientData                          //客户端数据包,该数据包和网关程序相对应
        {
            public int Command;                    //命令码
            public int Data;                       //整型命令数据
            public char[] Data1;                   //数据包1
        }
    然后发送三次呢?
      

  2.   

    byte[]传递struct转换不容易,特别是恢复回来,好像有Marshal.StructureToPtr,去看看为何不定义为class呢,里面可以有个属性,比如 
    SortedDictionary<int, byte[]> bitmapDictionary 就可以放很多fields
      

  3.   

    把struct ClientData 转换成byte[]类型。struct里的成员把长度固定了,全放在byte[]里,接收后再按长度分离。
      

  4.   

    必须是结构体吗??
    我传递一般都是XML,方便,而且容易进行定义和转换。
      

  5.   

    定义成类,然后为类的成员赋上值,最后在发送的时候用序列化函数把这个类序列化成字节数组.
    在接收的时候就把收到的字节数组再反序列化为对象,然后再取得这个对象的类型(GETTYPE()),在取得了这个对象的类型之后就把它与那个类进行比较,如果相等就说明是这个类,最后进行相关的操作就行了!