第五部分 服务器端框架
第16章 SocketServer
1. 基础
basichttp.py使用BaseHTTPServer 库的 HTTPServer和BaseHTTPRequestHandler建立了一个简单的服务器,向客户端返回相同的文档。响应内容是通过RequestHandler的self.wfile.write(content)实现的。
basichttpdoc.py根据RequestHandler的path属性返回不同的文档。
basichttpdocthread.py通过混入SocketServer 库的 ThreadingMixIn使得服务器支持了多线程,从而可以同时响应多个客户端。
simplehttp.py利用SimpleHTTPServer 库的 SimpleHTTPRequestHandler来建立服务器。服务器会提供当前目录下的所有文件,并且支持index.html。
simplehttpthread.py同样通过混入支持了多线程。
cgifork.py使用CGIHTTPServer 库的 CGIHTTPRequestHandler建立可以调用CGI程序的服务器。
2. 高级
socketserver.py使用 SocketServer 库的 ThreadingMixIn, TCPServer, StreamRequestHandler来建立非HTTP协议的服务器。通过对StreamRequestHandler的rfile读取和wfile写来实现与客户端的通信。当客户端连接的时候,StreamRequestHandler子类实例的handle方法将会被调用。
ipv6.py通过给服务器(TCPServer)设置address_family = socket.AF_INET6来使服务器兼容IPv6。
第17章 SimpleXMLRPCServer
simple.py建立一个XML-RPC服务器并且使用register_instance注册一个类的方法。建立服务器的过程和普通的Http Server基本一样。
xmlrpci.py能够返回方法的介绍。testclient.py可以交互地访问服务器。
func.py使用register_function直接注册一个方法。
stat.py使用了类的继承,主要是为了说明继承而来的方法一样可以采用XML-RPC调用。
doc.py使用DocXMLRPCServer代替SimpleXMLRPCServer建立服务器,使得可以使用浏览器访问服务器,获得方法的描述。
cgi.py使用CGIXMLRPCRequestHandler将CGI转化为XML-RPC服务。
第18章 CGI
越过。