了解到indy的执行后,就能明确TDSTCPServerTransport的OnConnect的执行时机了。
TDSTCPServerTransport的Start里,将OnConnect给了TIdTCPServerPeer的OnConnectEvent,
而 TIdTCPServerPeer的LOnConnectEvent关联着TIdTCPServer的OnConnect。LOnConnectEvent执行时,执行OnConnectEvent。
所以 OnConnect是在TIdThreadWithTask的Execute的BeforeRun里被执行了。这时,线程TIdThreadWithTask已经建立,但啥也没做。而TIdThreadWithTask又是被TIdSchedulerOfThreadPool给缓存着的。在这个事件里面Disconnect来防止DDOS应该还是可取的。
没有评论:
发表评论