erlang入门级服务器
哈哈,今天终于终于完成了Erlang入门级服务器的编写。
这是数据处理的代码。
%% @author Administrator %% @doc @todo Add description to db_4. -module(db). %% ==================================================================== %% API functions %% ==================================================================== -compile(export_all). %%-export([]). new() -> []. write(Key,Element,Db) -> io:format("~w~n",[[Key,Element]]), [{Key,Element}|Db]. read(Key,[{K,E}|D]) when K == Key -> io:format("~w~n",[[ok,E]]); read(Key,[L|D]) when D /= [] -> read(Key,D); read(_,_) -> "error,no instance". match(Element,[{K,E}|D]) when Element == E -> io:format("~w~n",[[ok,K]]); match(Element,[L|D]) when D /= [] -> match(Element,D); match(_,_) -> "error,no instance". delete(Key,Db) -> lists:keydelete(Key,1,Db). all(L) -> io:format("~w~n",[{all,L}]). %% ==================================================================== %% Internal functions %% ====================================================================
这是服务器代码。
%% @author Administrator %% @doc @todo Add description to db_s. -module(db_s). %% ==================================================================== %% API functions %% ==================================================================== %%-compile(export_all). -export([start/0,stop/0,write/2,delete/1,read/1,match/1,all/0]). start() -> register(echo,spawn(db_s,loop,[[]])), %%这里记得[]是参数列表。就算传入空列表,也要写进去。 ok. stop() -> echo!stop, ok. write(Key,Element) -> echo!{write,Key,Element}, ok. delete(Key) -> echo!{delete,Key}, ok. read(Key) -> echo!{read,Key}, ok. match(Element) -> echo!{match,Element}. all() -> echo!all, ok. %% ==================================================================== %% Internal functions %% ==================================================================== loop(Db) -> receive {write,Key,Element} -> Db2=db:write(Key, Element, Db), loop(Db2); {read,Key} -> db:read(Key,Db), loop(Db); all -> db:all(Db), loop(Db); {delete,Key} -> Db2=db:delete(Key,Db), loop(Db2); {match,Element} -> db:match(Element, Db), loop(Db) end.