Python模块解析之SocketServer(三)——模块思想

           SocketServer 体系 由两个部分构成 BaseServerBaseRequestHandler。思想很简单 BaseServer接受请求,将请求交给BaseRequestHandler处理。所以如果我们想思想自己特定的Socket服务器,只用创建自己的 MyServerMyRequestHandler 分别继承自适合的BaseServer 和 BaseRequestHandler。下面我们实现一个简单的Web服务器

 1 from os import curdir, sep
 2 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
 3 
 4 class MyHandler(BaseHTTPRequestHandler):
 5     def do_GET(self):
 6         try:
 7             f = open(curdir + sep + self.path)
 8             self.send_response(200)
 9             self.send_header('Content-type', 'text/html')
10             self.end_headers()
11             self.wfile.write(f.read)
12             f.close()
13         except ImportError:
14             self.send_error(404, 'File Not Found: %s' % self.path)
15 
16 def main():
17     try:
18         server = HTTPServer(('', 80), MyHandler)
19         print 'Welcome to the machine...........'
20         print 'Press ^C once or twice to quit.'
21         server.serve_forever()
22     except KeyboardInterrupt:
23         print '^C received, shutting down server'
24         server.socket.close()
25 
26 if __name__ == '__main__':
27     main()

  很简单吧……SocketServer体系的思想 是把 接受请求 和 处理请求 分别交给两个Server 和 Handler 去处理。Python自带的简易的 CGIHTTPServer, 和 WSGIServer(wsgiref模块)都是使用了该思想。

原文地址:https://www.cnblogs.com/ArtsCrafts/p/socketserver3.html