位置: 编程技术 - 正文

Python使用SocketServer模块编写基本服务器程序的教程(python socket用法)

编辑:rootadmin

推荐整理分享Python使用SocketServer模块编写基本服务器程序的教程(python socket用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:socket.socket python,python socket setsockopt,python中socket怎么用,PYTHON使用缩进来体现代码之间的逻辑关系,PYTHON使用缩进来体现代码之间的逻辑关系,PYTHON使用缩进来体现代码之间的逻辑关系,python socket.socket,python socket.socket,内容如对您有帮助,希望把文章链接给更多的朋友!

SocketServer简化了网络服务器的编写。它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer。这4个类是同步进行处理的,另外通过ForkingMixIn和ThreadingMixIn类来支持异步。

创建服务器的步骤。首先,你必须创建一个请求处理类,它是BaseRequestHandler的子类并重载其handle()方法。其次,你必须实例化一个服务器类,传入服务器的地址和请求处理程序类。最后,调用handle_request()(一般是调用其他事件循环或者使用select())或serve_forever()。

集成ThreadingMixIn类时需要处理异常关闭。daemon_threads指示服务器是否要等待线程终止,要是线程互相独立,必须要设置为True,默认是False。

无论用什么网络协议,服务器类有相同的外部方法和属性。

在Python3中,本模块为socketserver模块。在Python 2中,本模块为SocketServer模块。所以在用import导入时,要分情况导入,否则会报错。导入的代码如下:

SocketSerror模块包括许多可以简化TCP、UDP、UNIX域套接字 服务器实现的类。

Python使用SocketServer模块编写基本服务器程序的教程(python socket用法)

一、处理程序要使用本模块,必须定义一个继承于基类BaseRequestHandler的处理程序类。BaseRequestHandler类的实例h可以实现以下方法:1、h.handle() 调用该方法执行实际的请求操作。调用该函数可以不带任何参数,但是几个实例变量包含有用的值。h.request包含请求,h.client_address包含客户端地址,h.server包含调用处理程序的实例。对于TCP之类的数据流服务,h.request属性是套接字对象。对于数据报服务,它是包含收到数据的字节字符串。2、h.setup() 该方法在handle()之前调用。默认情况下,它不执行任何操作。如果希望服务器实现更多连接设置(如建立SSL连接),可以在这里实现。3、h.finish() 调用本方法可以在执行完handle()之后执行清除操作。默认情况下,它不执行任何操作。如果setup()和handle()方法都不生成异常,则无需调用该方法。如果知道应用程序只能操纵面向数据流的连接(如TCP),那么应从StreamRequestHandler继承,而不是BaseRequestHandler。StreamRequestHandler类设置了两个属性,h.wfile是将数据写入客户端的类文件对象,h.rfile是从客户端读取数据的类文件对象。如果要编写针对数据包操作的处理程序并将响应持续返回发送方,那么它应当从DatagramRequestHandler继承。它提供的类接口与StramRequestHandler相同。

二、服务器要使用处理程序,必须将其插入到服务器对象。定义了四个基本的服务器类。(1)TCPServer(address,handler) 支持使用IPv4的TCP协议的服务器,address是一个(host,port)元组。Handler是BaseRequestHandler或StreamRequestHandler类的子类的实例。(2)UDPServer(address,handler) 支持使用IPv4的UDP协议的服务器,address和handler与TCPServer中类似。(3)UnixStreamServer(address,handler) 使用UNIX域套接字实现面向数据流协议的服务器,继承自TCPServer。(4)UnixDatagramServer(address,handler) 使用UNIX域套接字实现数据报协议的服务器,继承自UDPServer。所有四个服务器类的实例都有以下方法和变量:1、s.socket 用于传入请求的套接字对象。2、s.sever_address 监听服务器的地址。如元组(".0.0.1",)3、s.RequestHandlerClass 传递给服务器构造函数并由用户提供的请求处理程序类。4、s.serve_forever() 处理无限的请求5、s.shutdown() 停止serve_forever()循环6、s.fileno() 返回服务器套接字的整数文件描述符。该方法可以有效地通过轮询操作(如select()函数)使用服务器实例。

三、定义自定义服务器服务器往往需要特殊的配置来处理不同的网络地址族、超时期、并发和其他功能,可以通过继承上面四个基本服务器类来自行定义。可以通过混合类获得更多服务器功能,这也是通过进程或线程分支添加并发行的方法。为了实现并发性,定义了以下类:(1)ForkingMixIn 将UNIX进程分支添加到服务器的混合方法,使用该方法可以让服务器服务多个客户。(2)ThreadingMixIn 修改服务器的混合类,可以使用线程服务多个客户端。要向服务器添加这些功能,可以使用多重继承,其中首先列出混了类。由于并发服务器很常用,为了定义它,SocketServer预定义了以下服务器类:(1)ForkingUDPServer(address,handler) (2)ForkingTCPServer(address,handler)(3)ThreadingUDPServer(address,handler)(4)ThreadingTCPServer(address,handler)上面有点乱,现总结以下:SocketServer模块中的类主要有以下几个:1、BaseServer 包含服务器的核心功能与混合类(mix-in)的钩子功能。这个类主要用于派生,不要直接生成这个类的类对象,可以考虑使用TCPServer和UDPServer类。2、TCPServer 基本的网络同步TCP服务器3、UDPServer 基本的网络同步UDP服务器4、ForkingMixIn 实现了核心的进程化功能,用于与服务器类进行混合(mix-in),以提供一些异步特性。不要直接生成这个类的对象。5、ThreadingMixIn 实现了核心的线程化功能,用于与服务器类进行混合(mix-in),以提供一些异步特性。不要直接生成这个类的对象。6、ForkingTCPServer ForkingMixIn与TCPServer的组合7、ForkingUDPServer ForkingMixIn与UDPServer的组合8、BaseRequestHandler9、StreamRequestHandler TCP请求处理类的一个实现、DataStreamRequestHandler UDP请求处理类的一个实现现在繁杂的事务都已经封装到类中了,直接使用类即可。

四、实例1.使用SocketServer模块编写的TCP服务器端代码:

2.异步服务器的实现

ThreadingMixIn的例子:

执行结果:

Python中使用bidict模块双向字典结构的奇技淫巧 快速入门模块提供三个类来处理一对一映射类型的一些操作'bidict','inverted','namedbidict'importbidictdir(bidict)['MutableMapping','_LEGALNAMEPAT','_LEGALNAMERE','__builtins__','_

使用Python编写一个最基础的代码解释器的要点解析 一直以来都对编译器和解析器有着很大的兴趣,也很清楚一个编译器的概念和整体的框架,但是对于细节部分却不是很了解。我们编写的程序源代码实

举例讲解Python编程中对线程锁的使用 锁python的内置数据结构比如列表和字典等是线程安全的,但是简单数据类型比如整数和浮点数则不是线程安全的,要这些简单数据类型的通过操作,就

标签: python socket用法

本文链接地址:https://www.jiuchutong.com/biancheng/386202.html 转载请保留说明!

上一篇:使用Python的Flask框架表单插件Flask-WTF实现Web登录验证(python3 flask)

下一篇:Python中使用bidict模块双向字典结构的奇技淫巧(python bilt)

  • 商业折扣和现金折扣的入账金额
  • 安装费人工费有什么不一样
  • 投资性房地产递延所得税资产怎么算
  • 领用自产产品用于职工食堂
  • 个人所得税算错
  • 固定资产入股交什么税
  • 股东投资属于什么会计要素
  • 有限责任公司应当具备的条件
  • 坏账准备期末应有余额怎么算
  • 房贷利息抵个税细则 两套房
  • 电子承兑过期后怎么兑现处理合适呢?
  • 嵌入式软件产品增值税即征即退
  • 以前年度损益调整会计分录
  • 有留抵税额的会计处理
  • 实收资本不到账如何做凭证
  • 货物运输企业在运输货物时应当尽可能采用
  • 支付境外销售佣金怎么做
  • 微信红包税前扣除
  • 如何计算一般稳定球面腔的主要参量
  • 金税三期个人所得税扣缴系统网络设置
  • 企业销售产品的会计分录
  • 企业应付账款管理优化方案设计
  • 公司绿化购买的苗木如何进行账务处理?
  • 小规模纳税人医院免增值税吗
  • 当月支付的费用需要计提吗
  • 小企业执行新会计准则吗
  • 应收账款平均余额怎么理解
  • 经营出租固定资产折旧额计入什么科目
  • backupnotify.exe是什么文件的进程 backupnotify进程安全吗
  • javascript遇到的问题
  • php 抓取别的网站的内容
  • exe是什么进程
  • phpurl编码
  • mysql如果不存在就创建表
  • php 统计
  • 增值税税收类型有哪些
  • AI:ModelScope(一站式开源的模型即服务共享平台)的简介、安装、使用方法之详细攻略
  • 现金流量表相关题目
  • php如何实现自动加载
  • 暂估价是单价还是总价
  • 增值税发票校验码在哪个位置
  • 元的解释是什么?
  • springboot aop切面
  • 企业开负数发票退货后怎么处理?
  • 增值税一般纳税人是什么意思
  • 委托第三方收款合法吗
  • 完美破费是什么意思
  • 车船税为什么没有发票
  • 借调人员怎么入账
  • 关联广告是什么意思
  • 工会经费的会计分录2022
  • 软件信息技术服务业
  • 临时聘用人员管理办法
  • SQL Server 2005通用分页存储过程及多表联接应用
  • 财务风险有什么类别
  • 提取盈余公积金
  • 企业转让固定资产属于什么收入
  • 汇算清缴如何调到不退不补
  • 营业外支出科目核算内容
  • 银行受理汇票贴现业务
  • 固定资产的特点有哪几个
  • 挂靠工程项目预交税金的会计分录如何做?
  • 公司食堂招待客户,客户付了钱怎么入账
  • 工会经费属于什么科目
  • xp系统好怪啊
  • 在bootstrap中,有哪几种导航
  • js类的实现
  • jquery教程
  • CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放
  • 使用时间
  • js去除hover样式
  • node.js app
  • javascript含义
  • android 快速开发工具
  • jquery使用教程
  • 广东省电子学校
  • 建筑施工及安装单位企业在异地
  • 有关节能环保的英语作文
  • 厦门税务地区编号
  • 广东省广州市国资委
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设