#!./mytop (************************************************************ listen.ml Created : Fri Feb 15 22:18:25 2002 Last modified: Sun Feb 17 03:12:06 2002 Compile: make # mytopの作り方 > ocamlmktop unix.cma -custom -o mytop ************************************************************) module Unix = UnixLabels;; let listen_as_server ~host ~port = let s = Unix.socket ~domain:Unix.PF_INET ~kind:Unix.SOCK_STREAM ~protocol:0 in begin Unix.bind s ~addr:(Unix.ADDR_INET(((Unix.gethostbyname host).Unix.h_addr_list).(0), port)); Unix.listen s ~max:5; (* maxは受け付ける接続数 *) match (Unix.accept s) with (fd,addr) -> begin let in_socket = Unix.in_channel_of_descr fd in let out = open_out "RESULT" in while true do let b = input_line in_socket in begin Printf.printf "%s\n" b; flush stdout; output_string out b; flush out; if b = "\r" then exit 0; end done; end; end;; (************************************************************ * メイン * * *) if (Array.length Sys.argv) != 3 then print_string "listen [hostname] [port]\n" else listen_as_server Sys.argv.(1) (int_of_string Sys.argv.(2));;