小米 放弃erlang java是因为不安全
erlang源码:模块tcp_listen
-module(tcp_listen).
-export([start/0,close/1]).
-define(PORT,5002).
start() ->
AA= << "我是汉字">>,
io:format("hello erlang ~w~n",[[AA,byte_size(AA)]]),
case gen_tcp:listen( ?PORT,[binary,{active,true},{packet,0}])
of
{ok,LSocket}->
io:format("listen port success ~w~n",[LSocket]),
spawn(fun() -> loop(LSocket) end) ,
{ok,LSocket}
;
{error,Reason}->
io:format("listen port error Reason: ~w~n",[Reason]),
{error,{cannot_listen,Reason}}
end .
%% server socket begin listen
loop(LSocket)->
io:format("begin listen lsocket: ~n",[]),
case gen_tcp:accept(LSocket)
of
{ok,Socket}->
io:format("receive client connect: ~w~n",[Socket]),
begin_receive(Socket),
spawn(fun()-> loop(LSocket) end)
;
{error,Reason}->
io:format("accept client error: ~w~n",[Reason])
end.
begin_receive(Socket)->
io:format("begin listen socket client data: ~n",[]),
receive
{tcp,Socket,Data}->
NewData= <>,
io:format("receive client data1: ~w~n",[NewData]),
gen_tcp:send(Socket,NewData) ,
begin_receive(Socket);
Data_2->
io:format("receive client data2: ~w~n",[Data_2])
end.
close(LSocket)->
gen_tcp:close(LSocket).