大家好!我现在用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();
}
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();
}
我今天用socket连接mina框架的服务器传送对象的时候也同样出了类似问题,在mina本身的过滤器的时候就已经抛出异常了,所报异常是转换出错。数据越界,我用mina本身的客户端机制传输对象也没问题。说明虽然同样是用ObjectOutputStream写,但中间的解析机制很可能是不一样的。
PS:用字符串流写的时候是都可以的。
对这种花时间不知道原因的问题,还是另想方法解决吧!!免得像我样耽误了一天。
Java对对象的序列化方式,与C/C++的不相同啊。
你可以看一看与Serializable相关的技术资料来解决问题,
也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
Java对对象的序列化方式,与C/C++的不相同啊。
你可以看一看与Serializable相关的技术资料来解决问题,
也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
Java对对象的序列化方式,与C/C++的不相同啊。
你可以看一看与Serializable相关的技术资料来解决问题,
也可以遗弃ObjectInputStream这种方法,采用IO字节流的形式来传递信息。
呵呵,大家谢谢关注,开始采用IO字节流的形式来传递信,但是发现发送不可见字符的时候变了,比如Server发过来0xCB,接收得到的结果是0xFD,真的很郁闷
字节过多或少都会使用CPU的使用率增加,晕啊!
如果C那边解析XML比较困难的话,只能自己编个协议来交互了。
但是,一定要主意数据类型所占bit大小。