네트워킹 (Networking) – 소켓 프로그래밍과 URL 처리
소켓 프로그래밍 (Socket Programming)
소켓 프로그래밍은 네트워크 통신을 위해 사용되는 중요한 기술입니다. Java에서는 Socket
과 ServerSocket
클래스를 이용하여 클라이언트-서버 모델의 네트워크 통신을 구현할 수 있습니다.
클라이언트 예제:
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의 프로토콜, 호스트, 포트, 경로 및 쿼리 파라미터를 출력하는 방법을 보여줍니다.