Re: 請教一下要如何把一各object丟到socket getoup …
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 9 之 10 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章