Skip to content

Instantly share code, notes, and snippets.

@b0oh
Last active February 17, 2016 02:29
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 b0oh/dbf72d3c9bc86d94e4de to your computer and use it in GitHub Desktop.
Save b0oh/dbf72d3c9bc86d94e4de to your computer and use it in GitHub Desktop.
module EchoServer
let start () = listen 1234
let listen port =
let (:ok, socket) = gen_tcp.listen port [(:packet, 0), (:active, false)]
in accept socket
let accept listen_socket =
let (:ok, socket) = gen_tcp.accept listen_socket
in do
spawn fn () -> echo socket
accept listen_socket
end
let echo socket =
match gen_tcp.recv socket 0 with
(:ok, data) ->
gen_tcp.send socket data
echo socket
(:error, :closed) ->
:ok
end
end
@Heinemark
Copy link

Brilliant code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment