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