6/27

ONLYS2545·2023년 6월 28일
0

통신
요청-응답으로 이루어짐

TCP

  • 3way handshaking
  • 연결지향
  • 신뢰성 있음

UDP

  • 신뢰성 없지만 속도가 빠르다.


Input, Output 실습



클라이언트 서버 책 예제


client

package practice;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) {
        Socket clientSocket = null;
        BufferedReader in = null;
        PrintWriter out = null;
        final Scanner sc = new Scanner(System.in);

        try {
            clientSocket = new Socket("localhost", 5000);
            out = new PrintWriter(clientSocket.getOutputStream());
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));
            String msg;

            while (true) {
                System.out.println("서버로 보낼 문자열을 입력하고 엔터키를 치세요");
                msg = sc.nextLine();
                if (msg.equalsIgnoreCase("quit")) {
                    out.println(msg);
                    out.flush();
                    break;
                }
                out.println(msg);
                out.flush();
                msg = in.readLine();
                System.out.println("서버로부터 온 메시지 : " + msg);

            }

        } catch (Exception e) {
            e.printStackTrace(out);
        } finally {
            out.close();
            try {
                clientSocket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

Server

package practice;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {

    public static void main(String[] args) {

        ServerSocket serverSocket = null;
        Socket clientSocket = null;
        BufferedReader in = null;
        PrintWriter out = null;
        Scanner sc = new Scanner(System.in);

        try {
            serverSocket = new ServerSocket(5000);
            System.out.println("연결을 기다리고 있음");
            clientSocket = serverSocket.accept();
            out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"), true);
            // in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()),
            // "UTF-8");
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));
            System.out.println("클라이언트와 연결되었음");

            while (true) {
                String msg = in.readLine();
                if (msg.equalsIgnoreCase("quit")) {
                    System.out.println("클라이언트에서 연결을 종료하였음");
                    break;
                }

                System.out.println("클라이언트가 보낸 문자열 : " + msg);
                System.out.println("클라이언트로 보낼 문자열을 입력하고 엔터를 치세요: ");
                String osmg = sc.nextLine();
                out.write(osmg + "\n");
                out.flush();

            }

            out.close();
            clientSocket.close();
            serverSocket.close();
        } catch (Exception e) {
            e.printStackTrace(out);

        }

    }
}
profile
백엔드 교육과정 기록 velog입니다.

0개의 댓글