03-缓存服务器

-module(one).
-export([start/0,getIP/1,appendIP/2,removeIP/1,cacheHost/1]).

start()->
    Pid=spawn(?MODULE,cacheHost,[#{}]), %spawn开启进程 模块名,函数名,参数
    register(cache,Pid). %register内置函数 注册 给Pid取一个原子的名字

getIP(Host)->
    Pid=whereis(cache),
    Pid!{get,Host,self()}, %self()获取客户端IP
    receive
        Response -> Response
    end.

appendIP(Host,IP)->
    Pid=whereis(cache),
    Pid!{append,Host,IP,self()},
    receive
        Response -> Response
    end.

removeIP(Host)->
    Pid=whereis(cache),
    Pid!{remove,Host,self()},
    receive
        Response -> Response
    end.

cacheHost(MAP)->
    receive % 关键字 接收到的数据
        {append,Host,IP,Client}->
            M2=maps:put(Host,IP,MAP),
            Client!appendSucc,
            cacheHost(M2);
        {get,Host,Client}->
            Client!maps:get(Host,MAP),
            cacheHost(MAP);
        {remove,Host,Client}->
            M2=maps:remove(Host,MAP),
            Client!removeSucc,
            cacheHost(M2);
        _Any->
            argsError

end.

语法不太习惯

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值