OCaml で echo
OCaml でとりあえず echo サーバを作ってみた。
なんというか、普通なので特に言うこともない。
ソース
open Printf let echoMain fp = (* recv -> print -> send するだけ *) let buf : string = String.create 512 in let len = Unix.recv fp buf 0 512 [] in let sendsize = Unix.send fp buf 0 len [] in printf "%d\n" len; printf "%s\n" (String.sub buf 0 len); flush stdout; Unix.close fp; ();; let main () = (* socket 開いて listen するだけ *) let sock = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in Unix.setsockopt sock Unix.SO_REUSEADDR true; Unix.bind sock (Unix.ADDR_INET(Unix.inet_addr_any, 8888)); Unix.listen sock 100; printf "listen in 8888\n"; flush stdout; while true do try let conn, addr = Unix.accept sock in let _ = Thread.create echoMain conn in () with Unix.Unix_error(Unix.EINTR, _, _) -> () done; (); ;; main();;
ビルドは
$ ocamlfind ocamlc -linkpkg -package unix,threads,netstring -thread echo.ml
でできる。