当前位置: 首页 > news >正文

美丽乡村建设发展论坛网站青岛做网站公司

美丽乡村建设发展论坛网站,青岛做网站公司,wordpress 摘要字数,京东商城官网登录一、基于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://wiki.neutronadmin.com/news/407357/

相关文章:

  • 网站的要素是什么意思wordpress网站上传服务器
  • 网站查询域名访问杭州手机模板建站
  • 网站建设公司-山而海口专业网站建设公司
  • 做通风工程上哪个网站发布哪里有响应式网站企业
  • 上海英文网站建设公司网页设计师 培训
  • 招聘网站做专题的目的石材公司网站源码
  • 免费做苗木的网站c# 网站开发教程
  • 北京东直门网站建设生态农业网站模板
  • 建筑工程网站源码wordpress 文章id 链接
  • pc建站淄博英文网站建设专业
  • 做美缝在哪个网站接单智能建站平台
  • 网站开发与维护是什么深圳建筑设计公司排行榜
  • 网站开发公司可行报告优秀网站的要素有
  • 爱站网seo综合查询工具淘宝做网站的多少钱
  • 好企业网站怎么查网站注册时间
  • 嘉定华亭网站建设wordpress 托管建站
  • 仿中国加盟网站源码网站优化的策略
  • 摄影网站建设解决方案网站建设的目的与意义
  • 网站如何优化关键词如何建立网站数据库
  • wordpress时尚英文站广州番禺建网站
  • 上海seo网站网站论坛页怎么做
  • php做的网站 订单系统海口 做网站
  • 百度网站权重企业网站首页排版分析
  • 想要个网站外贸人才网属于什么电子商务模式
  • 如何让自己网站排名提高个人网站建设合同范本
  • 品牌网站升级六安网新闻
  • 6黄页网站建设海南网站建站
  • 深圳住房和建设局网站业务主题如何开发高端市场
  • 巨腾网站建设界面设计模式
  • 佛山网站建设公司哪家便宜做网站六安