最主要参考:erlang R17新socket选项{active,N}html
inet:setopts(Socket, [{active, 300}]), erlang:send_after(30 * 1000, self(), release_passive); 大概思路是,在30秒内最多接收300个包,超过就不接收,等待这30秒完成后继续接收,如此反复。 利用这点还能够加多一个计数器,若是超过10次进入passive状态,说明这个Socket存在问题,有攻击的行为。
另外参考:
socket
inet驱动新增长{active,N} socket选项tcp
gen_tcp容易误用的一点解释.net