package ch14;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
public static void main(String[] args) throws Exception {
try (ServerSocket serverSocket = new ServerSocket(12345)) {
System.out.println("伺服器啟動,等待連線...");
try (Socket socket = serverSocket.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
OutputStream rawOut = socket.getOutputStream();
PrintWriter out = new PrintWriter(rawOut, true)) {
String line;
while ((line = in.readLine()) != null && !line.isEmpty()) {
System.out.println("收到: " + line);
}
// 準備回應內容
String body = "伺服器回覆的字樣";
byte[] bodyBytes = body.getBytes(StandardCharsets.UTF_8);
// 回傳最基本的 HTTP/1.1 回應
out.print("HTTP/1.1 200 OK\r\n");
out.print("Content-Type: text/plain; charset=UTF-8\r\n");
out.print("Content-Length: " + bodyBytes.length + "\r\n");
out.print("Connection: close\r\n");
out.print("\r\n"); // 空行分隔 header 與 body
out.flush();
rawOut.write(bodyBytes);
rawOut.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}