• server 端代码结构:
# socketserver 在处理用户请求时,同时使用了 “报警器(select)”和“腿毛(thread)”的功能
import socketserver

class MyClass(socketserver.BaseRequestHandler):
def handler(self):
pass
obj = socketserver.ThreadingTCPServer(('127.0.0.1',9999), MyClass)
obj.serve_forever()
  • 执行流程:

    • server = socketserver.ThreadingTCPServer(('127.0.0.1', 9997), MysocketServer)
  • 1、实例化一个对象,并赋值给server,实则为执行类中构造方法:

    • 从下到上查找__init__方法,ThreadingTCPServer、ThreadingMixIn,均没有__init__构造方法,从TCPServer中查找
    • TCPServer中有__init__,且做了2件事情:
    1. 执行BaseServer父类中__init__方法(此时自定义类MySocketserver,已经赋值给了RequestHandlerClass)
    2. 创建一个socket、绑定并监听起来  # 可通过 server.socket访问
  • 2、server.serve_forever()

  • 从下到上,依次查找并执行如下方法:

    • serve_forever(),

      • 只有BaseServer类中有,执行该方法,发现其又执行了self._handler_request_noblock()
    • _handler_request_noblock(),
      • 只有BaseServer中有,执行该方法,发现其又执行了self.process_request()
    • self.process_request(),
      • ThreadingMixIn类和BaseServer中都有,执行ThreadingMixIn中 process_request方法:创建一个线程,target为process_request_thread()方法

转载于:https://www.cnblogs.com/qiaogy/p/5875439.html

socketserver剖析.html相关推荐

  1. 自己实现多线程的socket,socketserver源码剖析

    1,IO多路复用 三种多路复用的机制:select.poll.epoll 用的多的两个:select和epoll 简单的说就是: 1,select和poll所有平台都支持,epoll只有linux支持 ...

  2. Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯...

    本节内容: 异常处理.Socket语法.SocketServer实现多并发.进程和线程.线程锁.GIL.Event.信号量.进程间通讯.生产者消费者模型.队列Queue.multiprocess实例 ...

  3. bottle框架剖析

    bottle框架剖析 使用 源码分析 一.使用 大致有以下几部分 quick start request routing generate contents request Data template ...

  4. 4.2.10 Kafka源码剖析, 阅读环境搭建, broker启动流程, topic创建流程, Producer生产者流程, Consumer消费者流程,

    目录 4.1 Kafka源码剖析之源码阅读环境搭建 4.1.1 安装配置Gradle 4.1.2 Scala的安装和配置 4.1.3 Idea配置 4.1.4 源码操作 4.2 Kafka源码剖析之B ...

  5. 网络编程--多线程 , socketserver

    内容补充 python2与python3的区别? """ python3对unicode字符的原生支持 Python2中使用ASCII码作为默认编码方式导致string有 ...

  6. volatile关键字之全面深度剖析

    引言 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...

  7. TensorFlow基础剖析

    TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使用节点表示抽象的数学计算,并使用 OP 表达计算的逻辑 ...

  8. c语言赋值x为字母,C语言算术、赋值、关系、逻辑运算详细剖析---

    标识符和关键字 ¨标识符:用来标识程序中的变量.符号常量.函数.数组.类型.文件等对象的名字.标识符只能由字母.数字和下划线组成,且第一个字符必需为字母或下划线.C语言中大小写字母是两个不同的字符. ...

  9. python3socket非阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信

    利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信. 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in ...

最新文章

  1. centos 脚本基础练习1
  2. 技术直播:讲一个Python编写监控程序的小故事
  3. 学习Kotlin(七)反射和注解
  4. js逻辑训练题_二建冲刺必刷300题!精选历年真题+母子题+模考易错题!
  5. drop 很慢 物化视图_终于解决了物化视图复制的问题
  6. 中国电信:预计2021年归母净利润同比增长23%-25%
  7. springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
  8. Atitit 异常机制与异常处理的原理与概论
  9. 单片机编程用什么软件?单片机开发软件有哪些?华维告诉你.
  10. RiPlus子主题V1.3-Unreal[幻]主题WordPress主题模板美化wp主题源码
  11. psd缩略图上传组件
  12. Google Map Web服务API
  13. MySQL高可用架构故障自动转移插件MHA
  14. 用java实现一个简单的网络聊天室
  15. html文档成品,HTML成品代码
  16. 饥荒无条件制作下载_饥荒巨人国无条件制造版
  17. 【苏小林主页】基于TP6和光年模板的个人主页
  18. oa系统都要服务器,oa系统需要购置云服务器吗
  19. C语言 提取软件文字,使用OCR文字识别软件如何将图中文字识别提取出来
  20. 卡诺图和Apple Watch的第一次亲密接触

热门文章

  1. 那年我整理的JavaEE面试题
  2. SELinux系列(十三)—默认安全上下文的查询和修改(semanage命令)
  3. 零代码、不花钱就能做大屏,这个报表工具帮了大忙
  4. 【实例解析】某水泥企业应用商业智能提升管理效率
  5. 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源
  6. cpu超频软件_Easy OC,装机小白进阶大神的好用软件
  7. 中文件编码方式_一文解开java中字符串编码的小秘密
  8. Win7matlab7.0安装教程,Win7下MATLAB7.0安装教程
  9. WampServer安装教程
  10. 数据结构(字符串)—— 删除“b“和“ac“