Python2.7 SocketServer

    该模块是一个简单的网络服务器模块。它由四个基本的服务器类组成:TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer。这四个类都是同步请求,只有一个请求完全处理完成后,下一个请求才会被处理,这样的模式不适合每个请求要花费很长时间的情况。该方法为每个请求生成单独的进程或者线程,ForkingMixIn和ThreadingMixIn类可以提供异步的处理框架。


创建一个服务请求需要几步:
    1  先创建一个请求句柄,可以使用BaseRequestHandler类来创建,然后重写该类的handle()方法。这个方法会处理进来的请求
    2  实例化一个服务器类,绑定服务器的地址
    3  调用handle_request()或者serve_forever()方法处理一个或者多个请求。


下面表示几个类的继承关系

+------------+
| BaseServer |
+------------+
      |
      v
+-----------+        +------------------+
| TCPServer |------->| UnixStreamServer |
+-----------+        +------------------+
      |
      v
+-----------+        +--------------------+
| UDPServer |------->| UnixDatagramServer |
+-----------+        +--------------------+

class SocketServer.BaseServer
    该类是所有server类的超类,他定义了接口,但是没有定义方法的实现,方法可以在子类中实现。

BaseServer.fileno()
    返回一个整数的文件描述符,表示那个服务器在监听,一般和select.select()配合使用,允许在一个进程中监视多个servers
BaseServer.handle_request()
    处理单个请求,这个调用以下方法: get_request(), verify_request(),process_request()
BaseServer.serve_forever(poll_interval=0.5)
    请求句柄直到收到一个明确的shutdown()请求。他会忽略self.timeout
BaseServer.shutdown()
    告诉 serve_forever()停止循环
BaseServer.address_family
    服务的socket属于哪个协议族
BaseServer.RequestHandlerClass
    用户提供一个请求句柄,
BaseServer.server_address
    服务监听在那个地址
BaseServer.socket
    在socket对象上,服务监听进来的请求
BaseServer.allow_reuse_address
    是否允许重用地址,默认False
BaseServer.request_queue_size
    请求队列大小,默认是5
BaseServer.socket_type
    socket类型
BaseServer.timeout
    超时时间,默认以秒为单位,None表示没有设置

可以被子类重写的方法:
BaseServer.finish_request()
BaseServer.get_request()
BaseServer.handle_error(request, client_address)
BaseServer.handle_timeout()
BaseServer.process_request(request, client_address)
BaseServer.server_activate()
BaseServer.server_bind()
BaseServer.verify_request(request, client_address)


RequestHandler.finish()
RequestHandler.handle()
RequestHandler.setup()

转载于:https://my.oschina.net/guol/blog/136028

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值