Erlang接受消息循环

重点:Socket有归属权,只有创建的进程才有资格处理,除非使用gen_tcp:controlling_process(Socket,Pid).,把该Socket的控制权交给Pid进程。

游戏中主要使用阻塞模式{active, fasle}


1、主动型消息接收(非阻塞):{active,true}
如果客户端发送的数据过快服务器可以处理的速度,那么系统就会被消息淹没,不会阻塞客户端,也叫异步服务器。
start()- >
{ ok,Listen}=gen_tcp:listen(Port,[...,{active,true}...]),
{ok,Socket}=gen_tcp:accept(Listen),
loop(Socket).

loop(Socket)->
     receive
          {tcp,Socket,Data}->
               ... do something with the data ...
          {tcp_closed,Socket}->
               ...
     end.
也叫异步服务器,不会阻塞客户端

2、被动型消息接收(阻塞):{active,false}
不会因为一个过于活跃的客户机通过发送大量数据的攻击而崩溃。 调用gen_tcp:rec
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值