[java] 자바 웹 서버와 클라이언트 구현하기
이번에는 자바를 사용하여 간단한 웹 서버와 클라이언트를 구현하는 방법에 대해 알아보겠습니다.
웹 서버 구현하기
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleWebServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("웹 서버 시작. 포트: 8080");
while (true) {
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String request;
while ((request = in.readLine()) != null) {
if (request.isEmpty()) {
break;
}
System.out.println("클라이언트 요청: " + request);
}
String response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>안녕, 웹!</h1>";
out.println(response);
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 코드는 8080 포트로 들어오는 클라이언트 요청을 받아들이고, 간단한 “안녕, 웹!” 메시지를 반환하는 웹 서버의 예시입니다.
웹 클라이언트 구현하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class SimpleWebClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8080);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("GET / HTTP/1.1\r\nHost: localhost:8080\r\n\r\n");
String response;
while ((response = in.readLine()) != null) {
System.out.println(response);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 코드는 로컬 8080 포트로 HTTP GET 요청을 보내고, 받은 응답을 콘솔에 출력하는 간단한 웹 클라이언트의 예시입니다.
두 예시 코드를 실행하여 간단한 웹 서버와 클라이언트를 구현하고 상호작용하는 방법을 시도해보세요!
참고 자료: