用socket 发送struct
struct中有一个字段是system.io.stream 是放照片的,
如果是空的话, 接收没有问题,
如果有照片的话,就在反序列化时报错:
o=bf.Deserialize(ms)
错误内容是:二进制流不包含有效的二进制标头,这有 0 个可能的原因,如无效的流或在序列化和反序列化之间的对象版本更改。我不知该如何处理!请高手帮忙!

解决方案 »

  1.   

    ==========================
    =  CSDN小助手 v3.0[内测] =
    =  全新体验 共同期待     =
    ==========================
      

  2.   

    struct 直接 用byte数组存放图片
      

  3.   

    使用 Stream.Read 和Write把 stream 跟byte互相转换
    发送byte数组
      

  4.   

    怎么能把一个Stream给发出去呢?
    先读成byte[],再说怎么能在struct里面嵌一个Stream(这么恐怖的struct),还有也不能用Stream来保存数据,Stream是用来通信的……无语啊……
      

  5.   

    to Ivony()
    也许我这么写不科学,可我是要在网上传一个STRUCT,内中有好多字段,其中一个是放照片的,现改用byte[]存放了,可是反序列化时还是报错!
    其他信息: 在分析完成之前就遇到流结尾。
    是不是网上传的struct中不能有byte[]?现指导一下吧
      

  6.   

    高手还没吃完?
    想问几个问题:
    1.要在C/S结构的程序中传递信息,即要有string字段,还要有照片(不一定都有),用struct传可不可以!合不合理!不合理的用什么?
    2.如果可以,怎么传?我目前是把照片转成byte[],再把struct序例化,但反序例化时,出错:其他信息: 在分析完成之前就遇到流结尾。
    3.如果不可以.该用何方式,是否用网络传递的struct中不能有byte[]?可否用其它方法来解决?
    大家讨论!指导在下!
      

  7.   

    你还有照片在里面,这样重量级的对象就不应该做成值类型的,用class。在分析完车gzhiqianjiu遇到流结尾这种错误一般是没有接收完全,最好是发送方先序列化到一个MemoryStream中,判断流长度,发送过去,再把MemoryStream写过去,接受方同样用MemoryStream缓冲,接收完再开始反序列化。