JAVA 프로그래밍

문제

서버와 클라이언트가 네트워크를 통해서 채팅하는 문제입니다 실행순서를 클릭하세요 클라이언트 -> 서버 -> 클라이언트 -> 서버 순서로 번갈아 가면서 순서대로 메시지를 전송합니다
서버 클라이언트
[Server]님이 들어오셨습니다. 대화(종료시 quit)를 입력하세요
[Client]님이 들어오실때까지 잠시만 기다려주세요
[Client]님이 들어오셨습니다
[Client]안녕하세요
[Server]반갑습니다
[Client]님이 나가셨습니다
[Client]님이 들어오셨습니다. 대화(종료시 quit)를 입력하세요
[Server]님이 들어오셨습니다
[Client]안녕하세요
[Server]반갑습니다
[Client]quit
[Client]님이 나가셨습니다

프로그램 코드

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		}
	}








 
실행 순서