Почему эта программа успешно работает при вызове start/0
, а не при вызове run/0
?Когда я запускаю программу, вызывая run/0
, я получаю {error, closed}
из gen/tcp
.
-module(echo_server).
-compile(export_all).
run() ->
spawn(fun() -> start() end).
start() ->
{ok, Listen} = gen_tcp:listen(12345, [binary,{packet,0},
{reuseaddr,true},
{active, true}]),
spawn(fun() -> par_connect(Listen) end).
par_connect(Listen) ->
{ok,Socket} = gen_tcp:accept(Listen),
spawn(fun() -> par_connect(Listen) end ),
loop(Socket).
loop(Socket) ->
receive
{tcp,Socket,Bin} =Msg ->
io:format("received ~p~n",[Msg]),
gen_tcp:send(Socket,Bin),
loop(Socket);
Any ->
io:format("any other received ~p~n",[Any]),
gen_tcp:close(Socket)
end.