常州网站建设服务中国建设监理协会网站个人会员系统

pingmian/2025/10/9 11:42:48/文章来源:
常州网站建设服务,中国建设监理协会网站个人会员系统,网站制作价格明细,大浪做网站一、基于tcp的socket通信的基本原理分析。基于tcp的socket通信#xff0c;主要依靠两个循环#xff0c;分别是连接循环和通信循环。这个前面的文章有写过#xff0c;在这里就不再重复了。二、socketserver实现多并发的原理分析。1.server类#xff1a;2.reques类。类继承关… 一、基于tcp的socket通信的基本原理分析。基于tcp的socket通信主要依靠两个循环分别是连接循环和通信循环。这个前面的文章有写过在这里就不再重复了。二、socketserver实现多并发的原理分析。1.server类2.reques类。类继承关系示例代码import socketserver import struct import json import os class FtpServer(socketserver.BaseRequestHandler):codingutf-8server_dirfile_uploadmax_packet_size1024BASE_DIRos.path.dirname(os.path.abspath(__file__))def handle(self):print(self.request)while True:dataself.request.recv(4)data_lenstruct.unpack(i,data)[0]head_jsonself.request.recv(data_len).decode(self.coding)head_dicjson.loads(head_json)# print(head_dic)cmdhead_dic[cmd]if hasattr(self,cmd):funcgetattr(self,cmd)func(head_dic)def put(self,args):file_path  os.path.normpath(os.path.join(self.BASE_DIR,self.server_dir,args[filename]))filesize  args[filesize]recv_size  0print(-----, file_path)with open(file_path, wb) as f:while recv_size  filesize:recv_data  self.request.recv(self.max_packet_size)f.write(recv_data)recv_size  len(recv_data)print(recvsize:%s filesize:%s % (recv_size, filesize)) ftpserversocketserver.ThreadingTCPServer((127.0.0.1,8080),FtpServer) ftpserver.serve_forever()分析开始结合上面的例子还有类关系图一块看。ftpserversocketserver.ThreadingTCPServer((127.0.0.1,8080),FtpServer) ftpserver.serve_forever()查找属性的顺序ThreadingTCPServer-ThreadingMixIn-TCPServer-BaseServer通过ThreadingTCPServer 这个类实例化出一个ftpserver对象。1.2 先从ThreadingTCPServer这个类中找__init__方法SocketServer的源码中可以看到它本身并没有__init__方法这时候就从ThreadingTCPServer所继承的两个父类中去找。从源码中可以看到ThreadingTCPServer一共继承了两个父类分别是ThreadingMixIn和TCPServer其中ThreadingMixIn中也没有__init__方法最终在TCPServer下找到了__init__此时执行TCPServer下的__init__方法。       1.3 TCPServer下的__init__方法一共做了四件事分别是执行了BaseServer类下的__init__方法创                                    建了socket对象绑定了IP地址和端口bind以及开始listen监听。        BaseServer类下的__init__方法做了两件事为创建出来的对象添加了两个属性分别                                            是server_address和RequestHandlerClass其中server_address是服务端绑定的ip地址和端                        口RequestHandlerClass是前面我们自己创建的FtpServer类。        完成了bind和listen操作是因为执行了server_bind和server_active            2.Serve_forever 实现连接循环。        2.1前面说了ftpserver这个对象是由ThreadingTCPServer这个类创建出来的所以说默认情况下ftpserver这个对象本身以及ThreadingTCPServer这个类都没有Serve_forever这个方法依旧按照上面的套路阅读源码从ThreadingTCPServer继承的父类中去找分别是ThreadingMixIn和TCPServer在这两个父类中都没有找到接着去看ThreadingMixIn和TCPServer继承的父类....关于继承顺序的概念在这也不再赘述.....最终在BaseServer中找到了Serve_forever这个方法。    2.2serve_forever下主要执行self._handle_request_noblock()进而执行request, client_address self.get_request()就是TCPServer中的self.socket.accept()然后执行self.process_request(request, client_address)在ThreadingMixIn中找到process_request开启多线程应对并发进而执行process_request_thread执行self.finish_request(request, client_address)。    2.3上述四部分完成了链接循环本部分开始进入处理通讯部分在BaseServer中找到finish_request,触发我们自己定义的类的实例化去找__init__方法而我们自己定义的类没有该方法则去它的父类也就是BaseRequestHandler中找.... 最后总结下创建socketserver的几个步骤。First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.   首先你必须创建一个类这个类必须是BaseRequestHandler的子类并且这个类必须要有一个handle方法这个方法用来处理连接进来的请求。2.Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class.其次你必须实例化一个服务器类在实例化的过程中需要传入服务端地址 以及 那个请求句柄的类。3.Then call the handle_request() or serve_forever() method of the server object to process one or many requests.然后执行服务器对象的handle_request()或 serve_forever()方法 来处理一个或多个请求。4.Finally, call server_close() to close the socket.最后执行server_close()这个方法关闭套接字。 转载于:https://blog.51cto.com/suhaozhi/1923787

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳网站设计网站建设哪个好搭配服装网站源码

类的定义 修饰符含义1无或internal 只能在当前项目中访问类,其它项目引用后也无法访问2public 可以任何地方访问类3abstract 不能实例化,只能供继承之用4sealed 不能供派生之用,只能实例化5internal abstract136public abstract237intern…

做网站三河asp与sql做网站

问题背景: 所谓“钟点秘书”,是指年轻白领女性利用工余时间为客户提供秘书服务,并按钟点收取酬金。“钟点秘书”为客户提供有偿服务的方式一般是:采用电话、电传、上网等“遥控”式 服务,或亲自到客户公司处理部分业务…

广州建站外贸网站做慕斯蛋糕那个网站有视频

目录 容器简介容器技术优缺点容器的组成基本技术namespace创建namespace的三种方法PID namespaceIPC namespacemount namespacenetwork namespaceUTC namespace cgroup(control group)rootfs镜像分层 容器创建原理 容器简介 容器是一种打包应用及其运行环境的方式,…

为什么建设网站要年年交钱WordPress开启me

最近在做uniapp相关的开发,在上传图片的时候遇到了一些问题,所幸经过一些努力,解决开发过程中遇到的困难,记录一下uniapp上传图片的实现过程 1、前端代码 setPic1: function() {var me this;var serverUrl this.serverUrl;uni…

教育教学成果展示网站建设怎么用群晖nas做网站

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口) 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件,点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口…

做网站的叫什么职位wordpress 图片加链接

小编有一个朋友,他的信用记录一直非常好,无论是贷款还是信用卡,一直都按时还款,而且每次都是提前好几天还,从来没有逾期过。不过元旦期间他去旅游,可能是玩的太嗨,忘记了1号是他的还款日&#x…

企业网站建设流程与方法 论文网页制作工具教程

itertools.cycle 是 Python 标准库中的一个函数,它用于创建一个无限循环迭代器。它接受一个可迭代对象作为参数,并会不断重复该可迭代对象的元素。 使用 itertools.cycle 可以方便地创建一个可以无限循环的迭代器。当你需要反复访问一个可迭代对象的元素…

网站建设公司厦门简单官网模板

前段时间发的日上直邮的微头条和视频,很多朋友遇到一些不明白的地方,我把问题汇总了一下,统一回答一下哦其实因为疫情,很多免税店都在做活动,活动方式不太一样,有好多种,我跟大家分享的只是其中…

长春火车站到龙嘉机场动车时刻表网站方案报价

Vivado synthesis可以解释各种RAM编码风格,并将它们映射到分布式RAM中或块RAM。此操作执行以下操作: •无需手动实例化RAM基元 •节省时间 •保持HDL源代码的可移植性和可扩展性从编码示例下载编码示例文件。 在分布式RAM和专用RAM之间的选择块存储器…

南山网站建设-信科网络wordpress前台英文后台中文

📟作者主页:慢热的陕西人 🌴专栏链接:C基于多设计模式下的同步&异步日志系统 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容实现了日志代码设计的实…

电商网站项目静海网站建设

​ 在这个繁忙的时代,简单而高效的工具成为生活和工作中的宝贵助手。以下是五款小巧而实用的小工具,或许正是你所需的生活小搭档。 1.远程终端——MobaXTerm ​ MobaXTerm是一款集成了多种网络工具的远程终端软件,可以通过SSH、Telnet、RDP…

个人音乐网站开发优秀界面设计作品

目前流行的各类前端框架,不管是react, angular还是vue,都有一个共同点,那就是支持组件化开发,但事实上随着浏览器的发展,现在浏览器也原生支持组件式开发,本文将通过介绍Web Components 的三个主要概念&…

网站开发工资高么怎样下载黑龙江人社app

30分钟快速搭建移动应用直传服务 背景 这是一个移动互联的时代。手机APP上传的数据会越来越多。把数据存储的问题交给OSS, 让开发者能更加专注于自己的应用逻辑。 那么怎么样基于OSS构建一个APP存储系统呢? 目的 本教程就是让你在30分钟内搭建一个基于OS…

怎么做查询网站做网站编辑需要学什么

public class Test{public static void main(String[] args){Person p new Person();} } /* 4.修饰的变量是一个常量(所有字符都大些 XXX 或者 XXX_XXX),只能赋值一次!final 固化的都是显示初始化的值(定义并初始化)(或者构造函数中的特定初始化的值&am…

绿色风格网站浙江自己如何做网站

文章目录 一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? 2:注册中心关系图解 3:引入注册中心服务执行流程 4:Dubbo注册中心好处 5:注册中心核心作用 二:注册中心实现方案 …

金色财经网站开发视频网站 界面设计

编者按:1991年微软研究院成立,三十年坚持不懈的探索成就了微软研究院今天在全球计算机科研领域的位置。在接下来的10年、30年中,科研世界会呈现何种面貌?下一个技术创新的突破点在哪里?微软又将怎样持续发挥作用&#…

创建网站的好处怀化seo快速排名

目录 1 创建用户数据源2 实现登录逻辑3 搭建登录页面4 设置登录框5 实现登录的逻辑6 用户注册总结 原来产品在创建应用的时候可以创建模型应用,模型应用对应我们小程序的后端。最新的更新已经将模型应用的能力下线,那我们不得不自己实现一下后端的逻辑。…

wordpress文本温州seo方法

效果演示 实现了一个登录注册页面的切换效果,当用户点击登录或注册按钮时,会出现一个叠加层,其中包含一个表单,用户可以在表单中输入用户名和密码,然后点击提交按钮进行登录或注册。当用户点击返回按钮时,会…

组装电脑报价网站源码单页面网站怎么做的

正题 题目链接:https://www.luogu.com.cn/problem/CF708E 题目大意 有n∗mn*mn∗m的矩形网格,然后每次每行最左边和最右边的格子各有pcdp\frac{c}{d}pdc​的概率会消失,进行kkk次。 求最后所有格子依旧四联通的概率,在%(1097)\%(10^97)%(1…

上海国外网站建设python怎么开发网站

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 示例 1 输入:nums [3,2,3] 输出:[3]示例 2 输入:nums [1] 输出&…