JAVA 프로그래밍

문제

1:n 채팅 서버 프로그램입니다 이를 해결하는 다음 프로그램에 대해 빈칸을 채우세요 
[Server] 서버 대기중
[Server] 클라이언트 연결 : Thread[Thread-0,5,main]
[Server] 클라이언트 연결 : Thread[Thread-1,5,main]
[Server] 데이터 도착 : Thread[Thread-1,5,main] [CHAT] [클라이언트2]안녕하세요
[Server] 데이터 전송 : Thread[Thread-0,5,main] [CHAT] [클라이언트2]안녕하세요
[Server] 데이터 전송 : Thread[Thread-1,5,main] [CHAT] [클라이언트2]안녕하세요
[Server] 데이터 도착 : Thread[Thread-0,5,main] [CHAT] [클라이언트1]반갑습니다
[Server] 데이터 전송 : Thread[Thread-0,5,main] [CHAT] [클라이언트1]반갑습니다
[Server] 데이터 전송 : Thread[Thread-1,5,main] [CHAT] [클라이언트1]반갑습니다 

코드 빈칸 채우기

import network.MultiClientServer; 
 
public class MultiClientServer_Main 
{	  
	public static void main( String[] args ) { 
		new MultiClientServer();	  	 
	} 
} 
package network; 
import java.net.*; 
import java.util.*; 
 
public class MultiClientServer 
{ 
	private  serverSocket; 
	private <ThreadPerClient> clients; 
	  
	public MultiClientServer() {  
		 { 
			serverSocket = new ( Network.serverPort ); 
			clients = new <ThreadPerClient>(); 
			System.out.println( "[Server] 서버 대기중" ); 
 
			 ( true ) { 
				 socket =  
				                serverSocket.();   
				ThreadPerClient client =  
				                         new ThreadPerClient( socket, clients ); 
				clients.add( client );  
				client.();   
				System.out.println( "[Server] 클라이언트 연결 : " + client ); 
			} 
		}  ( Exception e ) {  
			close(); 
			e.printStackTrace(); 
		}  
 
	} 
	 
	public void close() { 
		 { 
			 ( ThreadPerClient client : clients ) { 
				client.close(); 
				client.(); 
				clients.remove( client ); 
			} 
 
			 ( serverSocket != null ) { 
				serverSocket.close(); 
				serverSocket = null; 
			} 
		}  ( Exception e ) { 
			e.printStackTrace(); 
		} 
	} 
}  
package network;	 
import java.io.*; 
import java.net.*; 
import java.util.*; 
 
public class ThreadPerClient     
{ 
	private  socket; 
	private  in; 
	private  out; 
	private <ThreadPerClient> clients; 
 
	public ThreadPerClient(  socket, <ThreadPerClient> clients ) { 
		super(); 
		 { 
			this.in = new ( new ( socket.() ) ); 
			this.out = new ( socket.(), true ); 
			this.socket = socket; 
			this.clients = clients; 
		}  ( Exception e ) {  
			e.printStackTrace(); 
		}  
	} 
 
	@Override 
	public void () { 
		 { 
			( String data = null; ( data =  
			                                  in.readLine() ) 
			                                                 != null; ) { 
				System.out.println("[Server] 데이터 도착 : " + this + " " + data ); 
				( ThreadPerClient client : clients ) { 
					client.write( data ); 
				} 
			} 
		}  ( Exception e ) {  
			close(); 
			e.printStackTrace(); 
		}  
	} 
 
	public void write( String data ) { 
		 { 
			 ( this.getState() == .State.TERMINATED ) { 
				System.out.println( "[Server] 클라이언트 연결 해제 : " + this ); 
				close(); 
			}		 
			 ( out != null ) { 
				System.out.println("[Server] 데이터 전송 : " + this + " " + data ); 
				out.println( data ); 
			} 
		}  ( Exception e ) { 
			e.printStackTrace(); 
		} 
	} 
 
	public void close() { 
		 { 
			( socket != null ) { 
				socket.close(); 
				socket = null; 
			} 
			( in != null ) { 
				in.close(); 
				in = null; 
			} 
			( out != null ) { 
				out.close(); 
				out = null; 
			} 
		}  ( Exception e ) {  
			e.printStackTrace(); 
		} 
	} 
}