Java Networking

네트워킹 (Networking) – 소켓 프로그래밍과 URL 처리

소켓 프로그래밍 (Socket Programming)

소켓 프로그래밍은 네트워크 통신을 위해 사용되는 중요한 기술입니다. Java에서는 SocketServerSocket 클래스를 이용하여 클라이언트-서버 모델의 네트워크 통신을 구현할 수 있습니다.

클라이언트 예제:

import java.io.*;
import java.net.*;

public class ClientExample {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("localhost", 8080); // 서버의 IP 주소와 포트 번호
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);
            writer.println("Hello, Server!");

            InputStream input = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            String response = reader.readLine();
            System.out.println("서버로부터 받은 응답: " + response);

            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제에서는 Socket을 생성하여 서버에 메시지를 전송하고, 서버로부터 받은 응답을 출력하는 클라이언트 프로그램을 보여줍니다.

서버 예제:

import java.io.*;
import java.net.*;

public class ServerExample {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8080); // 포트 번호
            System.out.println("서버 시작: 포트 8080에서 대기 중...");

            Socket clientSocket = serverSocket.accept(); // 클라이언트 연결 대기
            System.out.println("클라이언트 연결됨: " + clientSocket);

            InputStream input = clientSocket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            String clientMessage = reader.readLine();
            System.out.println("클라이언트로부터 받은 메시지: " + clientMessage);

            OutputStream output = clientSocket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);
            writer.println("서버 응답: Hello, Client!");

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

위의 예제에서는 ServerSocket을 생성하여 클라이언트의 연결을 대기하고, 클라이언트로부터 메시지를 받아서 응답하는 간단한 서버 프로그램을 보여줍니다.

URL 처리 (Handling URLs)

Java에서는 URL 클래스를 통해 URL을 다루고 연결을 처리할 수 있습니다.

URL 예제:

import java.net.*;

public class URLExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com");
            System.out.println("프로토콜: " + url.getProtocol());
            System.out.println("호스트: " + url.getHost());
            System.out.println("포트: " + url.getPort()); // 기본 포트일 경우 -1 반환
            System.out.println("경로: " + url.getPath());
            System.out.println("쿼리: " + url.getQuery());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}

위의 예제에서는 URL 클래스를 사용하여 주어진 URL의 프로토콜, 호스트, 포트, 경로 및 쿼리 파라미터를 출력하는 방법을 보여줍니다.

네트워킹은 자바 프로그래밍에서 중요한 부분으로, 소켓 프로그래밍을 통해 클라이언트와 서버 간의 통신을 구현할 수 있습니다. 또한, URL 클래스를 이용하여 다양한 네트워크 리소스에 접근할 수 있습니다. 이러한 기술을 잘 이해하고 활용하면 다양한 네트워크 기반 애플리케이션을 개발할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *