test3.erl
理清楚了gen_server和gen_tcp之间的关系。
gen_server仅仅是一个通用模型。如果编写socket,还是需要gen_tcp。
gen_server不仅仅处理c/s,而且module之间也可以使用gen_server来进行交互处理。
-module(test3). -export([ttt/0]). ttt()-> start_server(). start_server()-> {ok,ListenSocket}= gen_tcp:listen(8888,[{packet,0},{active,false}]), {ok,Socket}=gen_tcp:accept(ListenSocket), {ok,_Bin}=loop(Socket,[]), gen_tcp:close(Socket), io:format("~p~n",[_Bin]). loop(Socket,Bs)-> case gen_tcp:recv(Socket,0) of {ok,Packet}-> io:format("ok read~p~n",[Packet]), loop(Socket,[Bs,Packet]); {error,closed}-> io:format("error closed~n"), {ok,Bs}; {erorr,_Reason}-> io:format("error Reason~n"), {ok,Bs} end.
0 条评论。