关于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然后执行上面的语句
是不是有哪里没有注意
感谢
...全文
168 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)?我觉得问题就在这里,好像只能用构造一个流吧。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧