JavaのServerSocketを使って簡易的なHttpServerを作ってみるサンプルです。HTTPは通常ポート番号80で待機しますが、今回は実験でもあるのでポート番号12435で待機させています。ブラウザからアクセスするときは http://127.0.0.1:12435 というように最後にポート番号をつけてアクセスします。try-with-resources文を積極的に使っていきましょう。HTMLの内容は自分で変えて遊んでみましょう。次回はもう少し頑張ったサーバーにしてみます。
import java.net.Socket; import java.net.ServerSocket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.BufferedOutputStream; import java.nio.charset.StandardCharsets; import java.io.IOException; public class HttpServerSample{ public static void main(String... args){ //ポート12435でServerSocket作成 try(var server = new ServerSocket(12435)){ HttpServerSample.accept(server); }catch(IOException e){ e.printStackTrace(); } } private static void accept(ServerSocket server){ while(true){ //クライアントからの接続を待機する try(var socket = server.accept()){ //クライアントから接続されたときの処理 HttpServerSample.connectHttp(socket); }catch(IOException e){ e.printStackTrace(); } } } private static void connectHttp(Socket socket) throws IOException{ try( var in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); var out = new PrintWriter(new BufferedOutputStream(socket.getOutputStream()), true); ){ String line; while((line = in.readLine()) != null){ System.out.println(line); if(line.isEmpty()){ break; } } out.println("HTTP/1.1 200 OK"); out.println("Content-Type: text/html"); out.println(); //ここでHTMLを送信する out.println("<span style=\"color:red\">Hello World</span>"); } } }