下面是一個簡單的UDP服務器:二郎OTP UDP服務器
-module(kvstore_udpserver).
-author("mylesmcdonnell").
%% API
-export([start/0]).
start() ->
spawn(fun() -> server(2346) end).
server(Port) ->
{ok, Socket} = gen_udp:open(Port, [binary]),
loop(Socket).
loop(Socket) ->
receive
{udp, Socket, Host, Port, Bin} ->
case binary_to_term(Bin) of
{store, Value} ->
io:format("kvstore_udpserver:{store, Value}~n"),
gen_udp:send(Socket,Host,Port,term_to_binary(kvstore:store(Value)));
{retrieve, Key} ->
io:format("kvstore_udpserver:{retrieve, Value}~n"),
gen_udp:send(Socket,Host,Port,term_to_binary(kvstore:retrieve(Key)))
end,
loop(Socket)
end.
我如何重組這使
一)它,或者至少它的相關部分,是一個gen_server使我可以添加到監督樹
b)用一個單獨的進程處理每封郵件增加併發。
我已經重新實現了從瞭解你對我的TCP服務器的一些二郎山sockserv例子,但我掙扎,以確定UDP一個類似的模式。