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

看板java作者 (sbr)時間16年前 (2008/12/25 00:04), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串10/10 (看更多)
※ 引述《Gitangan (周大貓)》之銘言: : 不好意思還不是很懂2位板友的解說= = : 我再把我的server的程式碼貼上, : 目前程式一直卡住中.. 請不要問怎麼改,大家討論一下問題點。 先不管程式細節,看 client/server 程式大體上的流程。 [Client site] socket = new Socket(servername, port); // 下面這個 statement 會導致 serialization stream header 送到 server site outstream = new ObjectOutputStream(socket.getOutputStream()); // ObjectInputStream constructor 會 block 住直到 server site 送來 // serialization stream header instream = new ObjectInputStream(socket.getInputStream()); [Server site] ss = new ServerSocket(port); ServerStart.socket = t.socket = ss.accept(); // 等待 client 送來 serialization stream header,沒問題可收到,不會 block 住 instream = new ObjectInputStream(t.socket.getInputStream()); // server 程式會 block 在這裡直到 client 以 writeUTF method 送過來一字串, // 但是 client 程式在建構 ObjectInputStream 時就 block 住,沒有(也不再)送出 // 任何數據到 server site,所以 server 程式會一直停在這裡,沒有機會建構 // ObjectOutputStream,那麼 client site 無法收到 serialization stream header // 而一直停住,於是 client/server 程式皆陷在一直等待對方送數據過來的狀態 message = instream.readUTF(); if (message.equals("/bye")) { outstream = new ObjectOutputStream(socket.getOutputStream()); outstream.writeUTF(message); ... } else { outstream = new ObjectOutputStream(socket.getOutputStream()); outstream.writeUTF(message); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.135.215 ※ 編輯: sbrhsieh 來自: 218.173.135.215 (12/25 00:07) ※ 編輯: sbrhsieh 來自: 218.173.135.215 (12/25 00:08)

12/25 00:11, , 1F
我就是因為SERVER端順序弄錯所以造成block現象...
12/25 00:11, 1F
文章代碼(AID): #19Kbs40m (java)
討論串 (同標題文章)
文章代碼(AID): #19Kbs40m (java)