erlang R17新socket选项{active,N}(二)

2014-11-24 12:48:12 · 作者: · 浏览: 1
ecv: <<"hello">> ok 2>在上面的例子中,我们设定了{active,3}的选项,在接收到客户端3次数据后,socket进入了passive状态,在重新设置{active,N}后继续接收tcp消息。

那么,如何在实际项目中运用{active,N}选项?

inet:setopts(Socket, [{active, 300}]),
erlang:send_after(30 * 1000, self(), release_passive);
大概思路是,在30秒内最多接收300个包,超过就不接收,等待这30秒完成后继续接收,如此反复。

利用这点还可以加多一个计数器,如果超过10次进入passive状态,说明这个Socket存在问题,有攻击的行为。


参考:

http://blog.csdn.net/mycwq/article/details/24814843
http://www.erlang.org/download/otp_src_17.0.readme
http://blog.yufeng.info/archives/2970