erlang之gen_tcp选项{active,N}

最主要参考:erlang R17新socket选项{active,N}

inet:setopts(Socket, [{active, 300}]),  
erlang:send_after(30 * 1000, self(), release_passive);
大概思路是,在30秒内最多接收300个包,超过就不接收,等待这30秒完成后继续接收,如此反复。
利用这点还可以加多一个计数器,如果超过10次进入passive状态,说明这个Socket存在问题,有攻击的行为。

另外参考:

inet驱动新增加{active,N} socket选项

gen_tcp容易误用的一点解释

你可能感兴趣的:(erlang之gen_tcp选项{active,N})