본문 바로가기
Java

순수 Java로 서버 구동

by Mecodata 2024. 10. 23.

과정

1. HttpServer를 통해 HTTP 서버 생성

  • HttpServer.create(InetSocketAddress address, int backlog) 메서드를 사용해 HttpServer 객체(서버) 생성
  • InetSocketAddress(ip, port) = 지정한 IP 주소와 포트 번호를 서버의 주소 및 포트로 설정하여 소켓 생성

2. createContext()를 통해 특정 경로로 들어오는 요청에 대한 Handler 정의

  • 해당 Handler는 HttpHandler 인터페이스를 구현
  • HttpHandler 인터페이스의 handle(HttpExchange exchange)에서 client 요청을 처리
  • HttpExchange = 서버와 클라이언트 간의 HTTP 요청과 응답을 처리하는 데 사용되는 클래스
  • exchange.sendResponseHeaders(200, int length)를 통해 상태 코드 200과 함께 응답 데이터의 길이 설정
  • exchange.getResponseBody()로 출력 스트림을 얻어 응답 데이터를 client로 전송하도록 설정

3. 생성한 HttpServer 객체에 start()를 통해 서버 실행

 

예시

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

import java.io.*;
import java.io.OutputStream;
import java.net.InetSocketAddress;

public class javaServer {

        public static void main(String[] args) throws IOException {
            HttpServer server = HttpServer.create(new InetSocketAddress("localhost",8080));
            server.createContext("/test", new requestHandler());
            server.start();
            System.out.println("Server Running.");
        }

        static class requestHandler implements HttpHandler {
            @Override
            public void handle(HttpExchange exchange) throws IOException {
                String response = "Hello, World!";
                exchange.sendResponseHeaders(200, response.getBytes(StandardCharsets.UTF_8).length);

                OutputStream outputStream = exchange.getResponseBody();
                outputStream.write(response.getBytes(StandardCharsets.UTF_8));
                outputStream.close();
            } 
    	}
}

 

'Java' 카테고리의 다른 글

Jsoup  (0) 2024.10.23
java.nio.file.Files  (0) 2024.03.12
java.io.FileWriter & FileReader  (0) 2024.01.29
com.google.gson.Gson  (1) 2024.01.15
java.util.Iterator  (0) 2023.12.21

댓글