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