能简要说一下Python-SocketServer、BaseServer、TCPServer、BaseHTTPServer、CGIHTTPServer间关系的吗

 我来答
匿名用户
2017-04-07
展开全部
这个关系,先看SocketServer模块,它有5个基本的服务类:BaseServer TCPServer UDPServer UNIXStreamServer UNIXDatagramServer. 处理类有BaseRequestHander StreamRequestHandler
其中BaseServer多用来被继承重写.实际用到的就其他四个类.
其中TCPServer又派生出BaseHTTPServer SimpleHTTPServer CGIHTTPServer SimpleXMLRPCServer DocXMLRPCServer等
应用:服务器收到一个请求(来自客户端的连接)时,就会实例化一个请求处理程序,并且它的各种处理方法会在处理请求时被调用。基本的BaseRequestHander类把所有的操作都放到了处理器的handle()方法中, 这个方法会被服务器调用,然后访问属性self.request中的客户端套接字。如果使用的是流(TCPServer)可以使用StreamRequestHander类来创建两个新属性self.rfile(用于读取)和self.wfile(用于写入),然后使用这些类文件对象和客户机进行通信。
实例:使用SocketServer模块创建一个小型服务器
from SocketServer import TCPServer, StreamRequestHandler
class Handler(StreamRequestHandler):
def handle(self):
addr = self.request.getpeername()
print '获取的连接来自:', addr
self.wfile.write('恭喜你, 连接成功')
server = TCPServer(('', 1234), Handler)
server.serve_forever()
Handler类中的request属性为socket对象
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式