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

看板java作者 (sbr)時間16年前 (2008/12/24 12:26), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串5/10 (看更多)
※ 引述《Gitangan (周大貓)》之銘言: : //Code : public class Client{ : public Socket socket; : public ObjectOutputStream outstream; : public ObjectInputStream instream; : public static String servername; : public static int port; : public static void main(String args[]) { : servername = "localhost"; : port = 600; : Client client = new Client(); : } : public Client() { //建構子 : try { : socket = new Socket(servername, port); //new Socket : outstream = new ObjectOutputStream(socket.getOutputStream()); : instream = new ObjectInputStream(socket.getInputStream()); : //程式停在這邊,但程式沒有終止...停在ObjectInputStream... : .... : }catch (IOException e) {} : } : } ObjectInputStream 在建構時就會 consume 底層的 InputStream,ObjectInputStream 會先讀取一些 bytes 來驗證是否是正確的 serialization stream header。 你的 client site 程式會停在建構 ObjectInputStream 的那個 statement,表示 client 程式以 socket 連接上 server site 後,server site 並沒有拿 socket output stream 來建構 ObjectOutputStream,所以 client site 沒有收到 serial- ization stream header。 另外,兩端的程式如果都要建立 ObjectInputStream/ObjectOutputStream 在 socket stream 之上,順序是重要的,如果兩端都是先建立 ObjectInputStream,兩端的程式 都會 block 住(看起來 client/server 都當掉了)。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.134.17 ※ 編輯: sbrhsieh 來自: 218.173.134.17 (12/24 12:31)

12/24 13:16, , 1F
那如果in out分做兩個thread 是不是就沒差了@@?
12/24 13:16, 1F

12/24 14:34, , 2F
視你怎麼做。要討論的話請回文附程式碼。
12/24 14:34, 2F
文章代碼(AID): #19KReHmK (java)
討論串 (同標題文章)
文章代碼(AID): #19KReHmK (java)