blob: 5fcaa28e9d9e6f8c316485b06dfcff11425cfd76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
(** Connect to addr and port and start communicating **)
let nc addr port =
let rec discuss csock =
let aux input output =
let buffer = Bytes.create 256 in
let n = Unix.read input buffer 0 (Bytes.length buffer) in
match n with
| 0 -> ()
| _ -> ignore (Unix.write output buffer 0 n); discuss csock
in
match Unix.select [Unix.stdin; csock] [] [] (-1.) with
| (fds, _, _) -> (
match List.hd fds == Unix.stdin with
| true -> aux Unix.stdin csock
| false -> aux csock Unix.stdout
)
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")
|