Skip to content

Instantly share code, notes, and snippets.

@ivg
Created June 19, 2013 04:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivg/5811621 to your computer and use it in GitHub Desktop.
Save ivg/5811621 to your computer and use it in GitHub Desktop.
A simple TCP broadcaster
open Lwt
let establish saddr caddr =
let open Lwt_io in
let str,push = Lwt_stream.create () in
let client (g,p) =
let rec loop () = write_chars p str >> loop () in
ignore_result (loop ()) in
let hsrv = establish_server saddr client in
lwt g,p = open_connection caddr in
let rec server_loop () = try_lwt
lwt ch = read_char g in
push (Some ch);
server_loop () with
End_of_file -> return (push None) in
server_loop () >> return (shutdown_server hsrv)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment