大家好!我现在用java做client,vc做Server,怎么连接上了后取得ObjectInputStream时出现
java.io.StreamCorruptedException: invalid stream header
但是用java做Server就可以try{   
Socket   socket=null;   
DataInputStream   inStream=null;   
DataOutputStream   outStream=null;   
FileOutputStream   fout   =   null;   
socket=new   Socket("192.168.1.3",6800);   
System.out.println("connection   OK");   
ObjectInputStream   oin   =   new   ObjectInputStream(socket.getInputStream());   //阻塞这里,一旦有数据发送过来就error:StreamCorruptedException
System.out.println("get   stream...");   
Vector   vector   =   (Vector)oin.readObject();   
int   size   =   vector.size();   
System.out.println("大小   :"+vector.size());   
oin.close();   
socket.close();   
}catch(Exception   e){   
      e.printStackTrace();   
}   

解决方案 »

  1.   

    这个可能是java同C的ObjectInputStream,ObjectOutputStream 输入输出流机制不同有关,
    我今天用socket连接mina框架的服务器传送对象的时候也同样出了类似问题,在mina本身的过滤器的时候就已经抛出异常了,所报异常是转换出错。数据越界,我用mina本身的客户端机制传输对象也没问题。说明虽然同样是用ObjectOutputStream写,但中间的解析机制很可能是不一样的。
    PS:用字符串流写的时候是都可以的。
    对这种花时间不知道原因的问题,还是另想方法解决吧!!免得像我样耽误了一天。
      

  2.   

    当然会出现这种问题,
    Java对对象的序列化方式,与C/C++的不相同啊。
    你可以看一看与Serializable相关的技术资料来解决问题,
    也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
      

  3.   

    当然会出现这种问题,
    Java对对象的序列化方式,与C/C++的不相同啊。
    你可以看一看与Serializable相关的技术资料来解决问题,
    也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
      

  4.   

    当然会出现这种问题,
    Java对对象的序列化方式,与C/C++的不相同啊。
    你可以看一看与Serializable相关的技术资料来解决问题,
    也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
      

  5.   


    呵呵,大家谢谢关注,开始采用IO字节流的形式来传递信,但是发现发送不可见字符的时候变了,比如Server发过来0xCB,接收得到的结果是0xFD,真的很郁闷
      

  6.   

    呵呵!我们的就是java与delphi交互,也是用字节流的,而且传输的时候还与字节大小有关系!
    字节过多或少都会使用CPU的使用率增加,晕啊!
      

  7.   

    不同语言之间的对象都存储方式,序列化方式都不会相同,就算你那个ObjectInputStream能正常被实例化,后面的转型也不可能正常。
      

  8.   

    最近网络条件不是很好,所以,一个回复的请求会被多次提交。如果不知道用什么进行不同平台的交互,推荐使用SOAP协议进行交互。
    如果C那边解析XML比较困难的话,只能自己编个协议来交互了。
    但是,一定要主意数据类型所占bit大小。