1.socketserver模块和类
socketserver是标准库中的一个高级模块,目标是简化很多样板代码(创建网络客户端和服务器所必须的代码)
这个模块封装了socket编程所需要的各种各样的类,现在可以使用类来编写应用程序。
因为以面向对象的方式处理事务有助于组织数据,以及逻辑性地将功能放在正确的地方,应用程序现在是时间驱动的,这意味着只有在系统中的时间发生时,它才会工作。
SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。
socketserver模块可以简化网络服务器的编写,Python把网络服务抽象成两个主要的类
一个是Server类,用于处理连接相关的网络操作
另外一个则是RequestHandler类,用于处理数据相关的操作。并且提供两个MixIn 类,用于扩展 Server,实现多进程或多线程。
类的描述
1.BaseServer 包含核心服务器功能和 mix-in类的钩子;仅用于推导,这样不会创建这个类的实例;可以用TCPServer 或 UDPServer 创建类的实例
2.TCPServer/UDPServer 基础的网络同步TCP/UDP服务器
3.UnixStreamServer/UnixDatagramServer 基于文件的基础同步TCp/UDP服务器
4.ForkingMixIn/ThreadingMixIn 核心派出或线程功能;只用做mix-in类与一个服务器类配合实现一些异步性;不能直接实例化这个类
5.ThreadingTCPServer/ThreadingUDPServer ThreadingMixIn 和 TCPServer/UDPServer的组合
6.ForkingTCPServer/ForkingUDPServer ForkingMixIn 和 TCPServer/UDPServer的组合
7.BaseRequestHandler包含处理服务器请求的核心功能;仅仅用于推导,这样无法创建这个类的实例;可以用StreamRequestHandler 或 DatagramRequestHandler 创建类的实例
8.StreamRequestHandler/DatagramRequestHandler实现Tcp/UDP服务器的服务处理器
四个基础类的继承关系
+------------+
| BaseServer |
+------------+
|v+-----------+ +------------------+
| TCPServer |------->| UnixStreamServer |
+-----------+ +------------------+
|v+-----------+ +--------------------+
| UDPServer |------->| UnixDatagramServer |
+-----------+ +--------------------+
这四个类使用"同步"来处理请求。只有处理完所有请求后,才可以开始处理新的请求&