python socket编程(二)--SocketServer模块

来源:互联网 发布:ubuntu 安装软件 编辑:程序博客网 时间:2024/06/11 19:41

python socket编程(二)--SocketServer模块

      SocketServer是python标准库中的一个高级模块,用来简化python服务器端编程。列一下SocketServer模块中实现的类。

1.BaseServer:包含服务器的核心功能与混合(mix-in)类的钩子功能。这个类用于派生,只是定义了些接口,具体在子类中细化,不要直接生成对外提供服务。
2.TCPServer/UDPServer:基本的网络同步 TCP/UDP 服务器 
3.UnixStreamServer/UnixDatagramServer :基本的基于文件同步 TCP/UDP 服务器 

      以上五个是服务器类,同步的。利用下面两个类提供异步特性。
1.ForkingMixIn/ThreadingMixIn:实现了核心的进程化或线程化的功能,用于与服务器类进行混合(mix-in),以提供一些异步特性。 不要直接生成这个类的对象 

ForkingTCPServer/ForkingUDPServer:ForkingMixIn 和 TCPServer/UDPServer 的组合 
ThreadingTCPServer/ThreadingUDPServer:ThreadingMixIn 和 TCPServer/UDPServer 的组合 

BaseRequestHandler:包含处理服务请求的核心功能。只用于派生新的类,不要直接生成 这个类的对象, 可以考虑使用 StreamRequestHandler 或 DatagramRequestHandler 
StreamRequestHandler/ 
DatagramRequestHandler :TCP/UDP 服务器的请求处理类的一个实现 

服务器类对象可以调用的几个重要的方法:

1.fileno():服务器监听的文件描述符,传给select(),实现监视多个进程,实现事件驱动;
2.serve_forever(poll_interval=0.5): 处理请求,直到一个明确的shutdown()请求。每poll_interval秒轮询一次shutdown。
3.shutdown():告诉serve_forever()循环停止并等待其停止。
当然还有许多。

请求处理器:
负责接收数据,我们可以继承SRH,DRH两个处理器类,重写其中的几个方法

setup():准备请求处理,默认什么都不做。(可选)

handle():重点重载的函数,接受客户端请求,处理,发送处理结果。几个常用的变量:self.server,self.request,self.client_address,在有客户消息进来的时候,handle()函数就会被调用。StreamRequestHandler 类支持像操作文件对象那样操作输入输出套接字。我们可以用 readline()函数得到客户消息,用 write()函数把字符串发给客户。

finish():环境清理,默认什么也不做。(可选)

注意:self.request变量的类型跟你是数据报还是流式有关。如果是流式服务的话,它就是socket对象。

TCPserver.py:

#! /usr/bin/env python# -*- coding:utf-8 -*-#from SocketServer import TCPServer as TCP,StreamRequestHandler as SRHfrom SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH)from time import ctimeHOST = ''PORT = 21567ADDR = (HOST,PORT)class MyRequestHandler(SRH):    def handle(self):        print '...connected from:',self.client_address        self.wfile.write('[%s] %s' % (ctime(),self.rfile.readline()))#类似与创建了一个已连接描述符,并注册了一个事件监听器tcpServ = TCP(ADDR,MyRequestHandler)print 'waiting for connection...'#服务器类对象轮洵,监测到读写操作,调用监听器的handle()
上面程序最后丢了一条语句:tcpServ.serve_forever()
此程序只提供一个SocketServer服务器的创建步骤参考

       
0 0
原创粉丝点击