-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). %%%
Erlang 异步accept
最新推荐文章于 2019-03-04 16:17:41 发布