研究了一下SocketServer模块,记录下每个类下函数的调用关系,加深了解
class BaseServer:
========================================================
+ __init__ (绑定server_address, RequestHandlerClass)
+ server_forever
+ handle_request
+ get_request (子类中具体实现)
+ verify_request
+ try: process_request
+ finish_request
+ RequestHandlerClass (实际处理方法)
+ close_request
+ except:
+ handle_error
+ close_request
class TCPServer(BaseServer):
========================================================
+ __init__
+ BaseServer.__init__
+ init socket
+ server_bind (socket bind)
+ server_activate (socket listen)
+ server_forever
+ handle_request
+ get_request (tcp: socket.accept)
+ ……
+ ……
class UDPServer(TCPServer):
========================================================
+ __init__
+ BaseServer.__init__
+ init socket
+ server_bind (socket bind)
+ server_activate (pass, do nothing)
+ server_forever
+ handle_request
+ get_request (udp: socket.recvfrom)
+ ……
+ ……
class ForkingMixIn:
========================================================
+ process_request (fork new process and release if not used)
+ ……
+ finish_request
+ RequestHandlerClass
+ ……
class ThreadingMixIn:
========================================================
+ process_request (create new thread and handle method)
+ ……
+ finish_request
+ RequestHandlerClass
+ ……
class BaseRequestHandler:
========================================================
+ __init__
+ setup
+ handle (实际处理的代码,需要自己实现)
+ finish
以上模块基于Python 2.5,背景色代码为子类中改写的函数
Python SocketServer 分析
最新推荐文章于 2025-09-16 10:18:39 发布
本文详细解析了Python SocketServer模块的工作原理及内部流程。通过展示BaseServer、TCPServer、UDPServer等类间的继承关系与函数调用流程,帮助读者理解SocketServer模块如何处理TCP与UDP请求,并介绍了ForkingMixIn与ThreadingMixIn混合类的作用。
1592

被折叠的 条评论
为什么被折叠?



