Erlang 异步accept

来源:互联网 发布:淘宝无线端主图大小 编辑:程序博客网 时间:2024/05/16 05:54
-module(myserver).-behaviour(gen_server).%%define-define(POLICY_PORT,8080). %%监听端口-record(state, {callback, sock, ref,disable_connect}).%%%gen_server callback-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).-define(TCP_OPTION,[binary,{packet,0},{active,false},{reuseaddr, true}]).-export([start_link/0,start_server/0,loop/1]).init([])-> process_flag(trap_exit, true), %%{ok, test_info()}. start_server().handle_call(_Request,_From,_State)->Reply = ok,{reply,Reply,_State}.handle_cast(_Msg,_State) ->{noreply,_State}.handle_info({inet_async, LSock, Ref, {ok, Sock}},_State)->io:format("connect  ...~n",[]),{noreply,_State};handle_info(_Info,_State) ->{noreply,_State}.terminate(_Reason,_State) ->io:format("I'm terminate.........~n"),ok.code_change(_OldVsn, State, _Extra) ->    {ok, State}.%% ====================================================================%% Internal functions%% ====================================================================start_link() ->io:format("~p start..~n",[self()]),gen_server:start_link({local,?MODULE}, ?MODULE, [], []).start_server() ->case gen_tcp:listen(?POLICY_PORT, ?TCP_OPTION) of {ok,LSock} ->%%io:format("listen ok~p~n", []),loop(LSock);{error,Reason} ->  {stop,Reason}    end.loop(LSock) ->    prim_inet:async_accept(LSock, -1). %%%

0 0
原创粉丝点击