Skip to content

Instantly share code, notes, and snippets.

@mythosil
Created August 12, 2011 08:55
Show Gist options
  • Save mythosil/1141729 to your computer and use it in GitHub Desktop.
Save mythosil/1141729 to your computer and use it in GitHub Desktop.
echo server written in erlang
-module(echo_server).
-export([run/0]).
-author('mythosil').
-define(PORT, 1986).
-define(TCP_OPTIONS, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]).
run() ->
Listener = listen(),
accept_loop(Listener).
listen() ->
{ok, Listener} = gen_tcp:listen(?PORT, ?TCP_OPTIONS),
Listener.
accept_loop(Listener) ->
Socket = accept(Listener),
spawn(fun() -> recv_loop(Socket) end),
accept_loop(Listener).
accept(Listener) ->
{ok, Socket} = gen_tcp:accept(Listener),
Socket.
recv_loop(Socket) ->
case gen_tcp:recv(Socket, 0) of
{ok, Data} ->
gen_tcp:send(Socket, Data),
recv_loop(Socket);
{error, closed} ->
ok
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment