[java] 자바 서버와 클라이언트의 통신 방법

서론

자바를 사용하여 서버와 클라이언트 간에 효과적인 통신을 구현하는 방법에 대해 알아보겠습니다. 이러한 통신은 네트워크 프로그래밍에 중요한 역할을 하며, 소켓을 이용하여 구현됩니다.

소켓 프로그래밍

소켓은 서버와 클라이언트 간의 통신을 가능하게 하는 역할을 합니다. 자바에서는 java.net 패키지에 소켓과 관련된 클래스와 인터페이스가 제공됩니다.

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

public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("서버주소", 포트번호);
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
            
            // 클라이언트에서 서버로 메시지 전송
            output.println("안녕하세요, 서버!");
            
            // 서버로부터 메시지 수신
            String response = input.readLine();
            System.out.println("서버로부터의 응답: " + response);
            
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

서버 및 클라이언트 구현

서버와 클라이언트 간 통신을 위해 각각 별도의 자바 프로그램을 작성해야 합니다. 서버는 클라이언트의 연결을 받아들이고, 클라이언트는 서버에 연결하여 데이터를 주고받습니다.

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

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(포트번호);
            System.out.println("서버가 시작되었습니다.");
            
            Socket clientSocket = serverSocket.accept();
            System.out.println("클라이언트가 연결되었습니다.");
            
            BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter output = new PrintWriter(clientSocket.getOutputStream(), true);
            
            // 클라이언트로부터 메시지 수신
            String message = input.readLine();
            System.out.println("클라이언트로부터의 메시지: " + message);
            
            // 서버에서 클라이언트로 메시지 전송
            output.println("안녕하세요, 클라이언트!");
            
            serverSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

마무리

이처럼 자바를 사용하여 소켓 프로그래밍을 통해 서버와 클라이언트 간의 효과적인 통신을 구현할 수 있습니다. 소켓 프로그래밍을 이용하면 네트워크 환경에서 안정적인 통신을 구현할 수 있으며, 다양한 응용 프로그램을 개발할 수 있습니다.