Skip to content

Instantly share code, notes, and snippets.

@blt
Created July 19, 2010 04:18
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 blt/481003 to your computer and use it in GitHub Desktop.
Save blt/481003 to your computer and use it in GitHub Desktop.
-module(echo).
-export([listen/1, accept/1]).
-define(TCP_OPTIONS, [binary, {active, false}]).
listen(Port) ->
{ok, Socket} = gen_tcp:listen(Port, ?TCP_OPTIONS),
accept(Socket).
accept(LSocket) ->
{ok, Socket} = gen_tcp:accept(LSocket),
spawn(?MODULE, accept, [LSocket]),
loop(Socket, []).
loop(Socket, BList) ->
case gen_tcp:recv(Socket, 0) of
{ok, Data} ->
loop(Socket, [Data|BList]);
{error, closed} ->
gen_tcp:send(Socket, lists:reverse(BList)),
ok
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment