我的init()函数创建UDP Socket并将Socket值作为State返回.
start() ->
        {ok, ServerPid} = gen_server:start_link(?MODULE, [], []).
%%% gen_server API
init([]) ->
        {ok, Socket} = gen_udp:open(8888, [list, {active,false}]),
        {ok, Socket}.
如何在函数start()中获取Socket?
您需要通过创建一个gen_server:call新创建的gen_server进程来获取套接字.例如:
start() ->
        {ok, ServerPid} = gen_server:start_link(?MODULE, [], []),
        Socket = gen_server:call(ServerPid, fetch_socket),
        ... Use Socket ...
并在gen_server中添加如下内容:
handle_call(fetch_socket, _From, State) ->
   {reply, State, State}. %% State == Socket