【发布时间】:2017-09-06 09:14:13
【问题描述】:
我有一个基于服务器-多客户端交互的应用程序。这是我在服务器类中使用的线程,用于创建一个接受所有新套接字的新线程:
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()
标签: java sockets objectinputstream objectoutputstream