[java] 자바 소켓 프로그래밍

이 블로그 포스트에서는 자바 소켓 프로그래밍에 대해 알아보겠습니다. 소켓 프로그래밍은 네트워크 통신을 위한 기술로, 클라이언트와 서버 간에 데이터를 주고받을 수 있도록 해줍니다.

소켓(Socket)이란?

소켓은 네트워크 상에서 데이터를 주고받기 위한 도구로, 클라이언트와 서버 간에 연결을 설정하고 데이터를 교환할 수 있도록 해줍니다.

자바 소켓 프로그래밍

자바에서 소켓 프로그래밍을 하려면 java.net 패키지의 SocketServerSocket 클래스를 사용합니다.

아래는 클라이언트와 서버 간에 간단한 텍스트를 주고받는 예제 코드입니다.

// 서버
import java.io.*;
import java.net.*;

public class MyServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(12345);
        Socket clientSocket = serverSocket.accept();
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            out.println(inputLine);
        }
    }
}
// 클라이언트
import java.io.*;
import java.net.*;

public class MyClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 12345);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        String userInput;
        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("Server says: " + in.readLine());
        }
    }
}

위 코드는 간단한 에코 서버를 구현한 예제로, 클라이언트가 보낸 메시지를 다시 클라이언트에게 돌려주는 기능을 수행합니다.

결론

자바를 사용하여 소켓 프로그래밍을 하면 네트워크 통신 기능을 구현할 수 있습니다. 소켓을 이용하면 클라이언트와 서버 간의 데이터 교환을 효율적으로 할 수 있으며, 이를 통해 다양한 네트워크 기능을 개발할 수 있습니다.

참고 자료: Oracle 자바 소켓 프로그래밍 가이드