0
爲什麼在調用start/0
時該程序運行成功,但在致電run/0
時不能運行?當我通過撥打run/0
啓動程序時,我從gen/tcp
得到{error, closed}
。我應該總是在父進程中調用listen()嗎?
-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.
謝謝,併爲我遲到抱歉。好答案! – 2012-09-11 08:27:46