summaryrefslogtreecommitdiff
path: root/netcat.ml
diff options
context:
space:
mode:
authorOlivier Gayot <olivier.gayot@sigexec.com>2020-01-09 12:17:45 +0100
committerOlivier Gayot <olivier.gayot@sigexec.com>2020-01-09 14:38:41 +0100
commit1973427f962122ab6dc251546f20393a2be33e5b (patch)
tree755df4955aecd3d7bcb578afe20de6d971487192 /netcat.ml
parent40f7bd6e1f0bc2926c8884b5ef55ac6fe40b22ed (diff)
First attempt
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
Diffstat (limited to 'netcat.ml')
-rw-r--r--netcat.ml16
1 files changed, 16 insertions, 0 deletions
diff --git a/netcat.ml b/netcat.ml
new file mode 100644
index 0000000..53c9521
--- /dev/null
+++ b/netcat.ml
@@ -0,0 +1,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")