Я реализовал небольшую программу Java-чатов, где клиенты могут общаться с сервером. Хотя несколько клиентов не будут работать - я считаю, это связано с тем, что клиент резервирует сокет при подключении? Есть ли простой способ добавить несколько клиентских функций? Спасибо за вашу помощь.Общение с несколькими клиентами - Java Server
public void startRunning(){
try{
server = new ServerSocket(6789, 100); // port no, max users
while(true){
try{
waitForConnection();
setupStreams();
connectionRecieving();
}catch(EOFException eofException){
showMessage("Server ended connection \n");
}finally{
closeConnection();
}
}
}catch(IOException ioException){
ioException.printStackTrace();
}
}
// Wait for connection
private void waitForConnection() throws IOException{
showMessage("Attempting connection... \n");
connection = server.accept();
showMessage("Connected to: " + connection.getInetAddress().getHostName() + "\n");
}
// Get stream to send and receive data
private void setupStreams() throws IOException{
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
}
// Close streams and sockets
private void closeConnection(){
showMessage("----- \nClosing connections... \n");
try{
output.close();
input.close();
connection.close();
}catch(IOException ioException){
ioException.printStackTrace();
}
}
Проблема в том, что каждое соединение перезаписывает предыдущее. Необходимо иметь несколько полей подключения и несколько потоков ввода/вывода. На самом деле вам нужно создать поток для обработки соединения, а _it_ может поддерживать соединение и потоки. – Gray
http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html - См. Последний раздел в учебнике, он содержит полный рабочий пример того, как поддерживать несколько клиентов. –