Advanced packet flooder. How does it work: ========================================== ========================================== ---Start starts Attack(i) in this.ThreadCount parallel threads i is internal attacker thread identifier =========================================== ---Attack inits variables for thread and and starts LoopExec synchronously or async =========================================== ---LoopExec checks attack state in loop and if attack is enabled: 1) connects if needed. if connect() was sync skips else exits to be called again from onconnected handler 2) runs passed delegates. If delegate was async(returned true) - exits to be reinvoked from handler else starts loop again after last delegate =========================================== ---ConnectWorker if not attacking or nothing to send - return to LoopExec send data while sync return async state =========================================== ---ReceivedWorker if !stream return to LoopExec read while attacking && !readLimit && connected && sync if read was async return async state => LoopExec will be restarted from handler =========================================== ---SentWorker if stream while attacking && !sendLimit && Connected randomize send data if send was async return asyncState => LoopExec => handler restart else while attacking send data if send was async return asyncState => LoopExec => handler restart =========================================== ===========================================