문제
서버와 클라이언트가 네트워크를 통해서 채팅하는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요
프로그램의 실행순서 및 실행상태
①
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 }
}