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 服务器的请求处理类的一个实现
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
- python socket编程(二)--SocketServer模块
- python Socket编程(二)----SocketServer
- Python socket模块编程 SocketServer框架
- python socket编程(2)-SocketServer 模块
- Python socket编程(阻塞) --基于SocketServer
- Python 深入剖析SocketServer模块(二)(V2.7.11)
- Python基础篇之Socket编程 SocketServer
- python 网络编程之socketserver模块
- Python网络通信之黏包问题(五)基于SocketServer模块和socket模块
- 套接字编程:socket模块和SocketServer模块
- python socket,socketserver
- Python SocketServer模块
- [Python]SocketServer模块
- python网络编程SocketServer
- python SocketServer 框架编程
- python网络编程socketserver
- Python 网络编程 SocketServer
- Python socket模块编程
- 经纬财富:辽源做空的几招
- 用 jsp 写的 ajax 技术实现省市县等 n 级联动
- 然后你就知道该干嘛去了
- c# 无法加载DLL找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
- 面向对象(一)
- python socket编程(二)--SocketServer模块
- 固定Webiress问题快速
- 最小生成树Freckles
- C语言入门——C语言学习日志4
- ZOJ 1008Gnome Tetravex DFS
- 咖啡豆香味开始与气候和生长地区
- ubuntu更新中源错误
- 简单的并查集1073家族
- Java基础笔记之异常处理