2010-11-30 48 views
0

我想在java中創建一個服務器,它將同時維護多達4個連接。我認爲將相關信息保存在一個數組中可以達到我的目的,但是我遇到了一些麻煩。Java對象流

這裏是我創建的類:


import java.net.*; 
import java.io.*; 
public class tcpConnects{ 
private ObjectInputStream input; 
private ObjectOutputStream output; 
private int player; 
public tcpConnects(int playerNumber, Socket connect) { 
    // TODO Auto-generated method stub 
     try{ 
      System.out.println("create InputStream"); 
      input= new ObjectInputStream(connect.getInputStream()); 
      System.out.println("create OutputStream"); 
      output= new ObjectOutputStream(connect.getOutputStream()); 
      System.out.println("streams created"); 
      //sendData("Welcome!"); 
      player=playerNumber; 
     }catch (IOException ioException){ 
      ioException.printStackTrace(); 
     } 
    } 
    public ObjectInputStream getInput(){ 
     return input; 
    } 
    public void setInput(ObjectInputStream in){ 
     input=in; 
    } 
    public ObjectOutputStream getOutput(){ 
     return output; 
    } 
    public void setOutput(ObjectOutputStream out){ 
     output=out; 
    } 
    public int getPlayer(){ 
     return player; 
    } 
    public void sendData(String data){ 
     try{ 
      output.writeObject(data); 
      output.flush(); 
     }catch (IOException ioException){ 
      ioException.printStackTrace(); 
     } 
    } 
} 

反正,當我發送一個插座進級,它會創建輸入流的階段,但後來實際上從來不創建的流。語法看起來是正確的,所以我只能假設有一些我不知道的邏輯錯誤。任何幫助解密爲什麼這個類不會創建一個輸入或輸出流將不勝感激。

感謝,

回答

7

創建的ObjectInputStream,在兩端的前ObjectOutputStreamObjectOutputStream的構造函數向構造函數ObjectInputStream讀取的流寫入頭文件,因此如果首先創建ObjectInputStreams,則會導致死鎖。

+0

謝謝,EJP,你一直是一個很好的幫助!首先在兩端創建輸出流非常完美! – Rolan 2010-11-30 12:37:16