2016-03-04 52 views
0

我想根據套接字創建一個ObjectInputStream並將此流添加到列表中。 客戶端連接在我的程序的主類中,並且套接字以線程中的其他方法發送。然後套接字用於創建流。 問題是,流從來沒有創建。我不知道爲什麼......根據套接字創建ObjectInputStream

下面是我的代碼:

在我的主題:

public void addClient(Socket socket){ 
    try{ 
     streamList.add(new ObjectInputStream(socket.getInputStream())); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 

在我的主類:

ServerSocket serverSocket = new ServerSocket(PORT); 
Socket socket; 
ClientThread clientThread = new ClientThread(); 
//start the thread 

try{ 
    socket = serverSocket.accept(); 
    clientThread.addClient(socket); 
} 
catch(IOException e){ 
    e.printStackTrace(); 
} 

在此先感謝。

回答

0

對方需要立即創建他的ObjectOutputStream連接。否則new ObjectInputStream將阻止,直到他這樣做。

如果您可以將ObjectInputStream的創建推遲到處理接受的套接字的線程的run()方法會更好。您不應該在接受循環中執行任何I/O,只需接受本身。否則,您可以阻止後續客戶端。