Skip to content

Instantly share code, notes, and snippets.

@bellthoven
Created September 10, 2012 14:47
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 bellthoven/3691245 to your computer and use it in GitHub Desktop.
Save bellthoven/3691245 to your computer and use it in GitHub Desktop.
Ponging
defmodule TCPServer do
def listen(port) do
tcp_options = [:list, {:packet, 0}, {:active, false}, {:reuseaddr, true}]
{:ok, l_socket} = :gen_tcp.listen(port, tcp_options)
do_listen(l_socket)
end
defp do_listen(l_socket) do
{:ok, socket} = :gen_tcp.accept(l_socket)
spawn(fn() -> do_server(socket) end)
do_listen(l_socket)
end
defp do_server(socket) do
case :gen_tcp.recv(socket, 0) do
{ :ok, data } ->
:gen_tcp.send(socket, respond_to(data))
do_server(socket)
{ :error, :closed } ->
:ok
end
end
defp respond_to(data) do
"pong"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment