各位大虾,
小弟用socket.BeginSend(......)来传递报文,这个函数的第一个参数要求是一个byte型的数组。如果我想传递的报文是一个结构体数组呢?该如何做?我是了用 (byte[])强制转换这个结构体数组不行,不知道还有没有其他好办法?换句话说就是如何将结构体数组以socket方式传递。谢谢了。

解决方案 »

  1.   

    各位大虾,序列化做法是不是这样:
    BinaryFormatter temp = new BinaryFormatter();
    temp.(要序列化成的流,我要序列化的结构体数组)现在我不知道第一个参数---“要序列化成的流”应该怎么写。我最终要的是一个可以发送的byte[]。
      

  2.   

    sorry, 应该写成 temp.Serialize(要序列化成的流,我要序列化的结构体数组)。还是不知道第一个参数怎么写。各位大虾救救小弟吧。
      

  3.   

    System.IO.MemoryStream memStream = new System.IO.MemoryStream();
    serializer.Serialize(memStream, obj);
      

  4.   

    多谢 terry_12(大撒发射点) ,我再问一下,memStream可以直接用来发送吗? 还是要把memStream转换成byte[]? 
    因为 小弟用socket.BeginSend(......)来传递报文,这个函数的第一个参数要求是一个byte型的数组。在先等,多谢了。已经看到曙光了!
      

  5.   

    最后再问一次:BinaryFormatter temp = new BinaryFormatter();
    System.IO.MemoryStream memStream = new System.IO.MemoryStream();
    temp.Serialize(memStream,this.arrayStruct); 
    byte[] byteArray = new byte[10000];
    memStream.Read(byteArray,0,100);为什么执行后,byteArray中没有内容呢?谢谢!
      

  6.   

    其中的this.arrayStruct就是我的结构体数组
      

  7.   

    terry_12(大撒发射点) 啊,最后指导一下啦,多谢了
      

  8.   

    自己发现问题了:要加上一句:memStream.Position = 0;多谢terry_12(大撒发射点)!结贴!