RosettaCodeData/Task/Hello-world-Web-server/Standard-ML/hello-world-web-server.ml

28 lines
673 B
OCaml
Raw Permalink Normal View History

2026-02-01 16:33:20 -08:00
val txt = Word8VectorSlice.full (Byte.stringToBytes "Goodbye, World!" ) ;
2023-07-01 11:58:00 -04:00
fun serve listener portnr =
let
fun next () =
let
val (conn, conn_addr) = Socket.accept listener
in
case Posix.Process.fork () of
NONE =>
(
Socket.sendVec(conn, txt); Socket.close conn ;
OS.Process.exit OS.Process.success
)
| _ =>
(
Socket.close conn ;next ()
)
end
in (
Socket.Ctl.setREUSEADDR(listener, true);
Socket.bind(listener, INetSock.any portnr );
Socket.listen(listener, 9);
next ()
)
end handle x => (Socket.close listener; raise x)
;