#!./mytop (************************************************************ listen.ml Created : Fri Feb 15 22:18:25 2002 Last modified: Sat Feb 16 03:09:07 2002 Compile: make # mytopの作り方 > ocamlmktop unix.cma -custom -o mytop ************************************************************) module Unix = UnixLabels;; let listen_as_server ~host ~port = begin 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 bsize = 128 in let b = String.create bsize in while true do let rsize = Unix.read fd ~buf:b ~pos:0 ~len:bsize in let wsize = Unix.write Unix.stdout b 0 rsize in () done; end 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));;