JAVA 프로그래밍

문제

서버와 클라이언트가 네트워크를 통해서 채팅하는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요 

프로그램의 실행순서 및 실행상태

 
①  
 
S1b  public static void main( String[] args ) {  

S12                    serverSocket.accept(); 

E001 // 클라이언트에서 네트워크 연결 요청할 때까지 서버는 계속 대기
②  
 
C1b  public static void main( String[] args ) {  

C12             new Socket( "localhost", 7700 ); 
③  
 
E002 // 클라이언트에서 네트워크 연결 요청하면 서버는 네트워크 연결 활성화 

S11    Socket socket = 

S14                            networkIn.readLine();

E003 // 클라이언트 데이터가 도착할 때까지 서버는 계속 대기
④  
 
E004 // (서버 프로그램과 별개로) 클라이언트 C12 이후 실행중  
⑤  
 
C11    Socket socket = 

C14                            scan.nextLine(); 

E005 // 클라이언트에서 '안녕하세요'를 입력 
⑥  
 
 
⑫  
 
C13     String clientMessage = 

C15     networkOut.println( clientMessage );

E006 // 데이터([Client]안녕하세요)를 서버로 전송

S13     String clientMessage = 

S16     System.out.println( "[Client]" + clientMessage );
⑦  
 
S18                            scan.nextLine(); 

E007 // 서버에서 '반갑습니다' 입력 
⑧  
 
 
⑨  
 
S17     String serverMessage = 

S19     networkOut.println( serverMessage );

E008 // 데이터([Server]반갑습니다)를 클라이언트로 전송

C17     String serverMessage = 

C19     System.out.println( "[Server]" + serverMessage );
⑩  
 
C14                            scan.nextLine(); 

E009 // 클라이언트에서 'quit'을 입력 
⑪  
 
 
⑫  
 
C13     String clientMessage = 

C15     networkOut.println( clientMessage );

E010 // 데이터([Client]quit)를 서버로 전송

S13     String clientMessage = 

S15      break;     
⑬  
 
S1e  }

E011 // 서버 프로그램 종료

E012 // (서버 프로그램과 별개로) 클라이언트 C15 이후 실행중  

C16      break;     
⑭  
 
C1e  }

E013 // 클라이언트 프로그램 종료 
⑮  
 

프로그램 코드

E001	// 클라이언트에서 네트워크 연결 요청할 때까지 서버는 계속 대기
E002	// 클라이언트에서 네트워크 연결 요청하면 서버는 네트워크 연결 활성화 
E003	// 클라이언트 데이터가 도착할 때까지 서버는 계속 대기
E004	// (서버 프로그램과 별개로) 클라이언트 C12 이후 실행중  
E005	// 클라이언트에서 '안녕하세요'를 입력 
E006	// 데이터([Client]안녕하세요)를 서버로 전송
E007	// 서버에서 '반갑습니다' 입력 
E008	// 데이터([Server]반갑습니다)를 클라이언트로 전송
E009	// 클라이언트에서 'quit'을 입력 
E010	// 데이터([Client]quit)를 서버로 전송
E011	// 서버 프로그램 종료
E012	// (서버 프로그램과 별개로) 클라이언트 C15 이후 실행중  
E013	// 클라이언트 프로그램 종료 
	
	import java.io.*;
	import java.net.*;
	import java.util.Scanner;
	
	public class NaiveChatServer
	{
S1b		public static void main( String[] args ) { 	
			try {
				System.out.println( "[Server]님이 들어오셨습니다. 대화(종료시 quit)를 입력하세요" );
				System.out.println( "[Client]님이 들어오실때까지 잠시만 기다려주세요" );
	
				ServerSocket serverSocket = new ServerSocket( 7700 ); 
S11				Socket socket = 
S12				                serverSocket.accept(); 
				System.out.println( "[Client]님이 들어오셨습니다" );
	
				BufferedReader networkIn = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
				PrintWriter networkOut = new PrintWriter( socket.getOutputStream(), true );
				Scanner scan = new Scanner( System.in ); 
	
				while( true ) {
S13					String clientMessage = 
S14					                       networkIn.readLine();
	
					if( clientMessage.contains( "quit" ) ) {
						System.out.println( "[Client]님이 나가셨습니다" );
S15						break;					
					}
					
S16					System.out.println( "[Client]" + clientMessage );
					System.out.print( "[Server]" );
S17					String serverMessage = 
S18					                       scan.nextLine(); 
S19					networkOut.println( serverMessage );
				}
	
				networkIn.close();
				networkOut.close();
				socket.close();
				serverSocket.close();
				scan.close();
			} catch ( Exception e ) {
				e.printStackTrace();
			}
S1e		}
	}
	
	import java.io.*;
	import java.net.*;
	import java.util.Scanner;
	
	public class NaiveChatClient
	{
C1b		public static void main( String[] args ) { 	
			try {	
				System.out.println( "[Client]님이 들어오셨습니다. 대화(종료시 quit)를 입력하세요" );
C11				Socket socket = 
C12				         new Socket( "localhost", 7700 ); 
				System.out.println( "[Server]님이 들어오셨습니다" );
	
				BufferedReader networkIn = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
				PrintWriter networkOut = new PrintWriter( socket.getOutputStream(), true );
				Scanner scan = new Scanner( System.in ); 
				
				while( true ) {
					System.out.print( "[Client]" );
C13					String clientMessage = 
C14					                       scan.nextLine(); 
C15					networkOut.println( clientMessage );
	
					if( clientMessage.contains( "quit" ) ) {
						System.out.println( "[Client]님이 나가셨습니다" );
C16						break;					
					}
	
C17					String serverMessage = 
C18					                       networkIn.readLine();
C19					System.out.println( "[Server]" + serverMessage );
				}
	
				networkIn.close();
				networkOut.close();
				socket.close();
				scan.close();
			} catch ( Exception e ) {
				e.printStackTrace();
			}
C1e		}
	}