최원종의 개발 블로그

(소켓 - 4) 1: 1 양방향 통신 본문

Java/JAVA 유용한 클래스

(소켓 - 4) 1: 1 양방향 통신

chl6698 2026. 3. 27. 09:45

-서버 코드

package server.ch02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerFile {

    public static void main(String[] args) {

        try (ServerSocket serverSocket = new ServerSocket(5001)) {
            Socket clientSocket = serverSocket.accept();
            System.out.println("클라이언트 연결 됨");

            //간단한 흐름 약속( 연결 후 클라이언트가 먼저 서버 측으로 메세지를 보낼 예정)
            //읽기 스트림 준비 (클라이언트 --->서버)

            BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            //쓰기 스트림 준비( 서버 ---> 클라이언트)
            PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);

            //기능 호출
            //1. 먼저 클라이언트에서 보낸 메시지 받기
            String message = reader.readLine();
            System.out.println("클라이언트측 메세지 : " + message);

            //2. 서버가 클라이언트에게 응답 전송
            writer.println("안녕 나는 서버야 ,반가워");

        } catch (IOException e) {
            System.out.println("오류 발생 : " + e.getMessage());
        }
    }
}

 

-클라이언트 코드

package client.ch02;

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientFile {

    public static void main(String[] args) {

        try (Socket socket = new Socket("localhost", 5001)) {
            //Socket socket = new Socket("localhost" , 5001) 생성 되는  순간
            //서버 측과 연결상태

            //쓰는 스트림( 클라이언트 --> 서버_
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            //읽기 스트림( 서버 --> 클라이언트)
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //기능 실행
            writer.println("서버야 안녕");

            //서버에서 보낸 응답 수신
            String response = reader.readLine();
            System.out.println("서버 측 응답 : " + response);


        } catch (UnknownHostException e) {
            System.out.println("서버 측을 알 수 없습니다");
            throw new RuntimeException(e);
        } catch (IOException e) {
            System.out.println("서버측에 연결할 수 없습니다.");
        }
    }
}

 

-출력 결과