作者sbrhsieh (sbr)
看板java
标题Re: 请教一下要如何把一各object丢到socket getoup …
时间Wed Dec 24 23:38:35 2008
※ 引述《ogamenewbie (._.)》之铭言:
: ※ 引述《sbrhsieh (sbr)》之铭言:
: : 另外,两端的程式如果都要建立 ObjectInputStream/ObjectOutputStream 在 socket
: : stream 之上,顺序是重要的,如果两端都是先建立 ObjectInputStream,两端的程式
: : 都会 block 住(看起来 client/server 都当掉了)。
: 你说的这个状况,我个人是很怀疑有存在在发问者的情况身上,
: 因为他 Client 有先建 ObjectOutputStream 才建 ObjectInputStream ,
: 既然没有 "两端都先建立 ObjectInputStream" ,
: 又何来 "两端的程式都会 block 住(看起来 client/server 都当掉了)" 。
上面这一段并不是针对原发问者的情况("另外"或许应换成 by the way),只是顺便
提醒相关需要注意的事情。
至於原发问者的问题,我前一篇回文应该有提到原因了,就是:
client site 会 block 在 ObjectInputStream 建构之处,是因为 server 没有在
accept client socket 後,就把 socket stream 包装成 ObjectOutputStream。例如
server site 的程式逻辑可能是要先接收了 client site 传送某些数据(过来处理),
或是传送某些 command 过来,server 才会回覆数据,又设计成 lazy initialize
ObjectOutputStream。
没有注意到 ObjectInputStream 建构时会从底层 stream 先 consume 部分数据来
验证的人,很容易就会写出先把 ObjectInputStream/ObjectOutputStream 都准备
好,然後再传送 data/command 给 server,而发生程式(出乎意料) block 住。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.135.215
※ 编辑: sbrhsieh 来自: 218.173.135.215 (12/24 23:39)