summaryrefslogtreecommitdiff
path: root/netcat.ml
diff options
context:
space:
mode:
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")