socketserver源码分析

一、socketserver简介

  socketserver是一个通用套接字类,从各方面定义一个server。对于基本的套接字服务器(socket-based servers),包括地址族(AF_INET,AF_UNIX等)、套接字类型(SOCK_STREAM,SOCK_DGRAM)等,对于基于请求的服务器(request-based servers),包括了客户端认证,如何处理多重请求等。 

二、server种类

  在serketserver里有5种类型的server,他们的继承关系如下图,下面的4个类都是同步处理请求的,不支持异步处理。如果要让他们支持异步处理,需要继承多进程和多线程(ForkingMixIn and ThreadingMixIn),比如说定义一个多线程UDPserver需要这样写 class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass

  

  如果要自己写一个server类,首先要继承基本请求处理类baseRequestHandler,然后重写他的 handle()方法来实现你自己的请求处理类,需要注意的是要区分开 StreamRequestHandler or DatagramRequestHandler(TCp or UDP)

时间: 2024-08-23 22:00:38

socketserver源码分析的相关文章

自动化运维Python系列之IO多路复用、SocketServer源码分析

IO多路复用 IO多路复用是指:通过一种机制,可以监视多个描述符,一旦某个系统描述符就绪(一般是读就绪或者写就绪)能够通知程序进行相应的读写操作 实例化例子就是在SocketServer模块中,客户端和服务端建立好连接,此时服务端通过监听conn这条链路,一旦客户端发送了数据,conn链路状态就发生变化,服务端就知道有数据要接收... Linux系统中同时存在select.pull.epoll三种IO多路复用机制 windows中只有select机制 1)select select本质上是通过设

python SocketServer 源码分析

附上原文链接: http://beginman.cn/python/2015/04/06/python-SocketServer/

socketserver源码分析udp版本

request对于tcp是conn,对于udp是(data,self.socket)data是不包含地址的消息,self.socket是套接字 ThreadingTCPServer()——>绑定接听,生成一个套接字对象,封装了一些属性 ThreadingUDPServer()——>生成套接字对象,并绑定端口 serve_forever——>tcp:循环等待建立链接,再实例化,循环收发消息:udp:循环收消息,再实例化,循环发消息 有套接字对象就可以收发消息 原文地址:https://ww

socketserver 源码剖析:

socketserver 源码剖析[有图有真相]: (一).Socketserver 内部流程调用图:        详解: 1.self.RequestHandlerClass() = MyClass() 转换为 执行这个方法 class MyClass(socketserer.BaseRquestHandler). 2. myclass 没有构造方法 __init__( ),从socketserer.BaseRquestHandler 父类 开始找,有构造函数 __init__( ),并且执

socketserver源码解析和协程版socketserver

来,贴上一段代码让你仰慕一下欧socketserver的魅力,看欧怎么完美实现多并发的魅力 client import socket ip_port = ('127.0.0.1',8009) sk = socket.socket() sk.connect(ip_port) sk.settimeout(5) while True: data = sk.recv(1024) print('receive:',data.decode()) inp = input('please input:') sk

手机自动化测试:appium源码分析之bootstrap一

手机自动化测试:appium源码分析之bootstrap一 前言: poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自动化测试的课程,讲解appuim的实际应用,培训全程用商业项目,   大家可以加qq群进行交流:195983133 开源的项目最大的好处是可以获得源代码,我们可以在源代码的基础上进行修改代码,编译,开发出符合我们要求的项目.如果想要做到可以修改源代码,首先要读懂代码了解代码.国内的一些公司

Appium Android Bootstrap源码分析之简介

在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解.今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium的源码分析之旅. 本文在真个系列中会扮演一个简介的角色,不会分析任何的代码,只会先给大家一个基本的印象,方便大家在持有这个印象的基础上往下和本人一块分析. 1. Bootstrap定义及在Appium中扮演的角色 我们先看一下本人大概一个月之前刚接触appium时整理的一个高层架构图 下面一部分就是

TeamTalk源码分析之login_server

login_server是TeamTalk的登录服务器,负责分配一个负载较小的MsgServer给客户端使用,按照新版TeamTalk完整部署教程来配置的话,login_server的服务端口就是8080,客户端登录服务器地址配置如下(这里是win版本客户端): 1.login_server启动流程 login_server的启动是从login_server.cpp中的main函数开始的,login_server.cpp所在工程路径为server\src\login_server.下表是logi

Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)

1 背景 还记得前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>中关于透过源码继续进阶实例验证模块中存在的点击Button却触发了LinearLayout的事件疑惑吗?当时说了,在那一篇咱们只讨论View的触摸事件派发机制,这个疑惑留在了这一篇解释,也就是ViewGroup的事件派发机制. PS:阅读本篇前建议先查看前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>,这一篇承接上一篇. 关于View与ViewGroup的区别在前一篇的A