HTTP クライアント

受信処理をループにしようと思ったけれど、よくわからなかったので、再帰処理で書いてみた。
調べてみると、for や while が使えるみたい。

let host = "localhost" and port = 8080 in
  let haddr = Unix.gethostbyname host in
  let sock = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
     Unix.connect sock (Unix.ADDR_INET(haddr.Unix.h_addr_list.(0), port));
     let request = "GET / HTTP/1.0\r\n\r\n" in
     let r = Unix.write sock request 0 (String.length request) in
     let buff = String.create 128 in
       let rec read_loop () =
         let r = Unix.read sock buff 0 127 in
           if r < 1 then ()
           else (
             print_string (String.sub buff 0 r);
             read_loop ()
           )
         in
           read_loop ();
;;