Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据套接字创建ObjectInputStream_Java_Sockets - Fatal编程技术网

Java 根据套接字创建ObjectInputStream

Java 根据套接字创建ObjectInputStream,java,sockets,Java,Sockets,我正在尝试根据套接字创建ObjectInputStream,并将该流添加到列表中。 客户端在我的程序的主类中连接,套接字在线程中的另一个方法中发送。然后使用套接字创建流。 问题是永远不会创建流。我不明白为什么 下面是我的代码: 在我的帖子中: public void addClient(Socket socket){ try{ streamList.add(new ObjectInputStream(socket.getInputStream())); }catc

我正在尝试根据套接字创建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();
}

提前感谢。

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

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