네트워킹 (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의 프로토콜, 호스트, 포트, 경로 및 쿼리 파라미터를 출력하는 방법을 보여줍니다.
