JAVA

Socket, ServerSocket 기본실습 : Echo 프로그램

zammanza 2013. 2. 28. 16:20

Client

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.net.UnknownHostException;

 

 

//Socket(Client) : Echo 프로그램

public class TcpClientEcho {

        public static void main(String[] args) {    

               Socket socket = null;

               BufferedReader br = null;             //서버에서 보낸 메세지 읽기

               BufferedWriter bw = null;             //서버에 보낼 메세지

              

               if(args.length != 2){

                       System.out.println("서버의 아이피와 메세지를 입력하세요");

                       System.exit(0);

               }

 

              

               try {

                       System.out.println("서버에 연결 중입니다.");

                       socket = new Socket(args[0], 7777);  

                       System.out.println("서버에 연결되었습니다.");

                      

                       bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //output!

                       br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                      

//                     String msg = args[1] + "\n";

                       bw.write(args[1] + "\n");    //줄바꿈("\n") 반드시 필요!

                       bw.flush();

                      

 

                       System.out.println("서버에서 받은 메세지 <--" + br.readLine());

                      

               } catch (UnknownHostException e) {

                      

               } catch (IOException e) {

                      

               } finally{

                       if ( br != null) try{br.close();} catch(IOException e){}

                       if ( bw != null) try{bw.close();} catch(IOException e){}

                       if(socket != null) try{socket.close();} catch(IOException e){}

               }

              

        }

}

 

 

 

 

 

 

Server

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

 

//ServerSocket (Server) : Echo 프로그램

public class TcpServerEcho {

 

 

        public static void main(String[] args) {

               ServerSocket serverSocket = null;

               Socket socket = null;

               BufferedWriter bw = null;     //데이터 쓰기

              

               BufferedReader br = null;             //데이터 받기

              

               //소켓 준비

               try {

                       serverSocket = new ServerSocket(7777);       //7777 포트로 대기중

                       System.out.println("서버가 준비되었습니다.");

               } catch (IOException e) {

                       e.printStackTrace();

               }

              

              

               while(true){

               try {

                       socket = serverSocket.accept();

                       System.out.println("클라이언트가 연결되었습니다 - " + socket.getInetAddress());       

                       br = new BufferedReader(new InputStreamReader(socket.getInputStream()));    //input

                       bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

                      

                       String message = br.readLine();

                       System.out.println("클라이언트에서 보낸 메세지 : " + message);

                      

                       bw.write(message + "\n");   //줄바꿈("\n")         

                      

              

                       bw.flush();    //출력 버퍼를 비우는 메서드! (반드시 써줄것!)

                      

               } catch (IOException e) {

                       e.printStackTrace();

               } finally {

                       if ( br != null) try{br.close();} catch(IOException e){}

                       if ( bw != null) try{bw.close();} catch(IOException e){}

                       if ( socket != null) try{socket.close();} catch(IOException e){}

               }

              

               }

              

        }

}