私はUnixシステムプログラミングに夢中になり、現在ソケットで最小限のhttpサーバを実装しようとしています。最小限のソケットhttpサーバ
現在、私は私が127.0を訪問したときに、ブラウザで何かを受け取るためにソケットをクローズしなければならないのはなぜ次のコード(それはocamlのだ、流れはどの言語でも同じです)
let establish_server() =
let socket = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
Unix.bind socket (Unix.ADDR_INET ((Unix.inet_addr_of_string "127.0.0.1"), 8888));
Unix.listen socket 128;
print_endline "accepting now";
while true do
let (service_socket, addr) = Unix.accept socket in
print_endline "Something arrived!";
let b = Bytes.create 1024 in
let _ = Unix.recv service_socket b 0 1024 [Unix.MSG_PEEK] in
print_endline @@ Bytes.to_string b;
let response = Bytes.of_string "HTTP/1.1 200 OK\n\nHey from Ocaml!" in
let _ = Unix.send service_socket response 0 (Bytes.length response) [Unix.MSG_PEEK] in
Unix.close service_socket;
done
を持っています。 0.1:8888?最後の行のソケットを閉じなければ、私のブラウザは永遠に回転し続けます。 ソケットの反対側に何かを送ることはできませんか?ソケットを閉じないと、ブラウザに何も表示されないのはなぜですか?