summaryrefslogtreecommitdiff
path: root/netcat.ml
blob: 53c9521ebab5a4532590033cf4bdb6fd6ae3b8b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(** Connect to addr and port and start communicating **)
let nc addr port =
    let rec discuss csock =
        let buffer = Bytes.create 5 in
        let n = Unix.recv csock buffer 0 (Bytes.length buffer) [] in
        match n with
        | 0 -> ()
        | _ -> ignore (Unix.write Unix.stdout buffer 0 n); discuss csock
    in
    let sock = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
    Unix.connect sock (Unix.ADDR_INET (Unix.inet_addr_of_string addr, port));
    discuss sock

let () = match Array.length Sys.argv with
| 3 -> nc Sys.argv.(1) (int_of_string Sys.argv.(2))
| _ -> raise (Failure "Usage error")