【发布时间】:2012-03-20 21:17:36
【问题描述】:
为什么调用start/0时程序运行成功,调用run/0时运行不成功?当我通过调用run/0 启动程序时,我从gen/tcp 得到{error, closed}。
-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.
【问题讨论】: