2016-03-04 53 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,只需接受本身。否则,您可以阻止后续客户端。