Re: 請教一下要如何把一各object丟到socket getoup …

看板java作者 (sbr)時間16年前 (2008/12/24 23:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串9/10 (看更多)
※ 引述《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)
文章代碼(AID): #19KbT--8 (java)
討論串 (同標題文章)
文章代碼(AID): #19KbT--8 (java)