-1
클라이언트가 서버와 통신 할 수있는 작은 Java chatroom 프로그램을 구현했습니다. 여러 클라이언트가 작동하지 않더라도 - 클라이언트가 연결되어있는 동안 소켓을 예약하기 때문에 이것이라고 생각합니까? 여러 클라이언트 기능을 추가하는 간단한 방법이 있습니까? 당신의 도움을 주셔서 감사합니다. 읽고 동시에 여러 클라이언트에 쓸 수여러 클라이언트와 통신 - Java 서버
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 -이 자습서의 마지막 섹션을 참조하십시오. 다중 클라이언트를 지원하는 방법에 대한 완전한 예제가 있습니다. –