我正在尝试根据Socket创建一个ObjectInputStream,并将此流添加到List中。 客户端连接在我的程序的主类中,套接字通过Thread中的其他方法发送。然后套接字用于创建流。 问题是流永远不会创建。我不明白为什么......
以下是我的代码:
在我的主题中:
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 :(得分:0)
对等方需要在连接时立即创建ObjectOutputStream
。否则new ObjectInputStream
将阻止,直到他这样做。
如果您可以将ObjectInputStream
的创建推迟到处理接受套接字的线程的run()
方法,那会更好。你不应该在accept循环中做任何I / O,只接受accept本身。否则,您可以阻止后续客户端。