GGYU

서버/클라이언트 예제 본문

프로그래밍/JAVA

서버/클라이언트 예제

GANADARA 2018. 7. 19. 21:49
package practice.iting.tistory.com;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class EchoServer {
 
    public static void main(String[] args) {
        ServerSocket serverSocket = null//서버의 소켓
        int port = 10001//포트 번호
         
        try{
            serverSocket = new ServerSocket(port); //포트에 서버소켓을 붙인다(Bind)
            System.out.println(getTime() + " 서버가 준비되었습니다.");
             
            Socket socket = serverSocket.accept(); // 클라이언트의 접속을 허가한다.(Accept)
            InetAddress clientAddress = socket.getInetAddress(); // 클라이언트의 주소를 가져온다.
            System.out.println(getTime() + clientAddress + " 에서 클라이언트가 접속했습니다.");
 
            OutputStream out = socket.getOutputStream(); //클라이언트 소켓의 바이트 스트림을 가져온다.
            InputStream in =socket.getInputStream(); //클라이언트 소켓의 바이트 스트림을 입력한다.
             
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(out));
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
             
            String recvStr = null//받은 문자열
            while((recvStr = br.readLine()) != null){
                System.out.println(getTime() + " 클라이언트로부터 받은 문자열 : " + recvStr);
                pw.println(recvStr);    //메시지를 클라이언트에게 전송
                pw.flush(); //버퍼를 비움
            }
             
            pw.close(); //스트림 닫기
            br.close(); //버퍼 닫기
            socket.close(); //소켓 닫기
        }catch(Exception e){
            e.printStackTrace(); //예외 처리
        }
    }
    static String getTime(){
        SimpleDateFormat f = new SimpleDateFormat("[hh:mm:ss]"); //날짜 출력
        return f.format(new Date());
    }
}



package practice.iting.tistory.com;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
 
public class EchoClient {
 
    public static void main(String[] args) {
        try{
            String ip = "localhost"//클라이언트의 임시 접속 주소
            int port = 10001//접속할 서버 포트
            Socket socket = new Socket(ip, port); //클라이언트의 소켓 생성
         
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
 
            OutputStream out = socket.getOutputStream(); //서버의 소켓으로부터 출력을 받음
            InputStream in = socket.getInputStream(); //서버의 소켓으로부터 입력을 받음
             
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(out)); //출력 스트림을 변환
            BufferedReader br = new BufferedReader(new InputStreamReader(in)); //입력 스트림을 변환
             
            String myMsg = null//전달 메시지
            String echo = null//받는 메시지
         
            while((myMsg = input.readLine()) != null){
                if(myMsg.equals("/q")){
                    break//연결 해제
                }
                 
                pw.println(myMsg); //PrintWriter를 이용하여 서버에게 전달
                pw.flush(); //버퍼 비우기
                 
                 
                echo = br.readLine(); //서버가 버퍼로 메시지를 전달하면 이를 읽음
                System.out.println("서버: " + echo);
            }
             
            pw.close();
            br.close();
            socket.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
 
}


출처: http://it-ing.tistory.com/111 [아이티-잉]

'프로그래밍 > JAVA' 카테고리의 다른 글

sha512 예제  (0) 2018.07.19
base64 사용법  (0) 2018.07.19
크리티컬섹션 처리  (0) 2018.07.19
thread 사용법  (0) 2018.07.19
threadpool 사용법  (0) 2018.07.19
Comments