关于ObjectInputStream问题求助

Shenn 2004-05-04 05:49:00
InputStream inStream = socket.getInputStream();
input = new BufferedReader(new InputStreamReader(inStream));
DataInputStream din = new DataInputStream(inStream);//此句无问题
ObjectInputStream objin = new ObjectInputStream(inStream);
// 执行到此处后程序死锁,等了很久都没反应
OutputStream outStream = socket.getOutputStream();
output = new PrintWriter(new OutputStreamWriter(outStream));
dout = new DataOutputStream(outStream);
objout = new ObjectOutputStream(outStream); // 同样问题
服务器端使用connection socket,在accept()函数之后返回socket然后执行上面的语句
是不是有哪里没有注意
感谢
...全文
95 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Shenn 2004-05-05
哦,知道原因了

原因是在构造ObjectInputStream时,它要读取并检验ObjectOutputStream发送
过来的流报头,如果CS两端都采用相同的顺序来构造ObjectInputStream和
ObjectOutputStream,那么就会导致CS两个都在等待对方发送的流报头,致使双方
都无限等待下去。因此解决的办法是将CS两端构造这两个流的顺序调换一下。
  • 打赏
  • 举报
回复
Shenn 2004-05-05
两个流是可以的啊
inStream负责网络传输的流
DataStream读写基本的数据类型
ObjectStream读写自定义的数据类型
不冲突的

刚刚把InStream和OutStream两个流调换顺序就可以了
也就是先构造Object的输出流,再构造Object的输入流,就可以了
不过为什么上面的方法就不行呢,还是不知道为什么
有没有高手知道的
  • 打赏
  • 举报
回复
dogcai 2004-05-04
因为这样一来,变成一个输入,两个输出。。好像不行吧。。:)
你说呢?
  • 打赏
  • 举报
回复
dogcai 2004-05-04
你为什么要用instream构造两个不同的流呢(DataInputStream、 ObjectInputStream)?我觉得问题就在这里,好像只能用构造一个流吧。
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2004-05-04 05:49
社区公告
暂无公告