서버와 클라이언트가 네트워크를 통해서 채팅하는 문제입니다 실행순서를 클릭하세요 클라이언트 -> 서버 -> 클라이언트 -> 서버 순서로 번갈아 가면서 순서대로 메시지를 전송합니다
| 서버 | 클라이언트 |
|
[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 }}