2015-12-28 165 views
0

我對ObjectInputStream有問題。我想通過這個發送對象,但程序停止在我想初始化ObjectInputStream的位置。我已經搜索了回答,並且我發現在你初始化一個ObjectInputStream之前需要打開ObjectOutputstream。但是這在那裏是有保證的。ObjectInputStream沒有初始化

我的客戶端類的代碼段:

socket = new Socket(InetAddress.getByName(server).getHostAddress(), 13340); 
     messages = new Scanner(socket.getInputStream()); 
     p = new PrintStream(socket.getOutputStream()); 
     ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); 

     p.println("addServerContent"); 

     o.flush(); 
     System.out.println("1"); 
     o.writeObject(String.valueOf(index)); 
     o.writeObject(s); 

而且繼承人的服務器的一部分:

}else if(what.equals("addServerContent")){ 
     ObjectInputStream i = null; 
     try{ 
      i = new ObjectInputStream(s.getInputStream()); 
     }catch(IOException e){} 

     while(GxMS2.ListUsed){ 
      try { 
       Thread.sleep(10); 
      } catch (InterruptedException ex) {} 
     } 

     try{ 

      System.out.println("1"); 
      int index = Integer.parseInt((String)i.readObject()); 
      ServerContent sc = (ServerContent)i.readObject(); 

在服務器它doesn't甚至達到了 「1」 的標誌。

爲什麼它不工作?

謝謝

+0

它是掛起這裏'而(GxMS2.ListUsed)'或其他地方... – Tom

+0

不,它不存在,我在同時前面加一個標誌,它沒有被觸發 – RPanic

+0

「我發現,用ObjectOutputStream需求被打開之前,你可以初始化一個ObjectInputStream「絕對不是真的 – ControlAltDel

回答

0

你不能用一個對象流結合字符流,以便其既可以是您用PrintWriter或與ObjectOutputStream但不能同時包裹OutputStream

+0

爲什麼不呢?他們互相阻擋? – RPanic