繁体   English   中英

根据套接字创建ObjectInputStream

[英]Create ObjectInputStream according to a socket

我试图根据套接字创建一个ObjectInputStream并将此流添加到列表中。 客户端在程序的主类中连接,而套接字是通过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();
}

提前致谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM