对于 TCP 编程的总结就是:创建一个监听 socket,然后把它绑定到端口和地址上并开始监听,然后不停 accept。这也是 tornado 的 TCPServer 要做的工作。

    简言之,基于事件驱动的服务器(tornado)要干的事就是:创建 socket,绑定到端口并 listen,然后注册事件和对应的回调,在回调里accept 新请求。

    add_accept_handler 方法的流程:首先是确保ioloop对象。然后调用 add_handler 向 loloop 对象注册在fd上的read事件和回调函数accept_handler。该回调函数是现成定义的,属于IOLoop层次的回调,每当事件发生时就会调用。回调内容也就是accept得到新socket和客户端地址,然后调用callback向上层传递事件。从上面的分析可知,当read事件发生时,accept_handler被调用,进而callback=_handle_connection被调用。