Python Network Programming(8)---SocketServer模块

来源:互联网 发布:韩国历史教材 知乎 编辑:程序博客网 时间:2024/06/12 01:08

Note:python3中SocketServer模块名字变为socketserver

SocketServer 模块的官方文档:https://docs.python.org/2/library/socketserver.html

总共有4个基本的服务器类:
TCPServer,UDPServer,UnixStreamServerUnixDatagramServer.
这4个类中封装了socket模块中一些方法,可以实现用socket模块手动完成的所有服务器操作,例如创建套接字、绑定地址和监听进入的连接。
但是这四个类都是同步通信,每一个来自客户的请求,都需要完成后,下一个请求才会开始。在SocketServer模块中,可以使用mix-in类型的类ForkingMixInThreadingMixIn来创建单独的进程或者线程实现异步通信。

Creating a Server

  • First,创建一个请求处理程序,说明如何处理客户端请求。这个请求处理类需要继承自BaseRequestHandler类。请求处理类中,必须重写handle()方法,这个方法将说明如何处理客户的请求。
  • Second,需要实例化(先创建一个新的类,继承自thread或者forking和服务器类中的一个)4个基本服务器类中的其中一个,向其中传入服务器地址参数与请求处理类参数。
  • Then,然后调用服务器对象的handle_request()或者serve_forever()方法来处理一个或者多个请求。
  • Finally,调用server_close()方法来关闭套接字。

KEY POINT:Forking and threading versions of each type of server can be created using the ForkingMixIn and ThreadingMixIn mix-in classes. For instance, a threading UDP server class is created as follows:
class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass
首先要继承的是mix-in类,因为ThreadingMixIn重写了一个UDPServer里面的方法。

0 0