根据套接字创建ObjectInputStream

时间:2016-03-04 01:01:30

标签: java sockets

我正在尝试根据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();
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

对等方需要在连接时立即创建ObjectOutputStream。否则new ObjectInputStream将阻止,直到他这样做。

如果您可以将ObjectInputStream的创建推迟到处理接受套接字的线程的run()方法,那会更好。你不应该在accept循环中做任何I / O,只接受accept本身。否则,您可以阻止后续客户端。