0
我有一个基于服务器 - 多个客户端交互的应用程序。这是我在服务器类中使用的线程创建一个新线程,我接受所有新套接字:Java从套接字获取ObjectInputStream ObjectOutputStream
Thread acceptingThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Socket s = serverSocket.accept();
listaSocket.add(s);
listaOis.add(new ObjectInputStream(s.getInputStream()));
listaOos.add(new ObjectOutputStream(s.getOutputStream()));
System.out.println("Client connected");
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
acceptingThread.start();
private ServerSocket serverSocket;
private ArrayList<Socket> listaSocket;
private ArrayList<ObjectInputStream> listaOis;
private ArrayList<ObjectOutputStream> listaOos;
阻断程序的行是:
listaOis.add(new ObjectInputStream(s.getInputStream()));
listaOos.add(new ObjectOutputStream(s.getOutputStream()));
阅读ObjectInputStream构造函数的javadoc。 –
我认为serverSocket.accept()是阻止程序,它等待新的请求来。 –
在我的客户端我正在做一个套接字连接到这台服务器。在我从客户端获取套接字。ObjectInputStream需要一个InputStream在他的构造函数。我从s.getInputStream() – Cristian