26 lines
642 B
Erlang
26 lines
642 B
Erlang
|
-module(echoserver).
|
||
|
|
||
|
-export([start/0]).
|
||
|
|
||
|
start() ->
|
||
|
{ok, LSock} = gen_tcp:listen(5999, [{active, true}, {packet, line}, {reuseaddr, true}]),
|
||
|
accept_loop(LSock).
|
||
|
|
||
|
accept_loop(LSock) ->
|
||
|
case gen_tcp:accept(LSock) of
|
||
|
{ok, Sock} ->
|
||
|
gen_tcp:controlling_process(Sock, spawn(fun () -> connection(Sock) end)),
|
||
|
accept_loop(LSock)
|
||
|
end.
|
||
|
|
||
|
connection(Sock) ->
|
||
|
receive
|
||
|
{tcp, _, Line} ->
|
||
|
gen_tcp:send(Sock, Line),
|
||
|
connection(Sock);
|
||
|
{tcp_closed, _} ->
|
||
|
ok;
|
||
|
Other ->
|
||
|
error_logger:error_report({connection, unhandled, Other})
|
||
|
end.
|