zoukankan      html  css  js  c++  java
  • 昨日回顾

    计算机的计量单位

    int类型的能表示的范围:2的7次方减一

    计算机表示范围为2的8次方

    1个小格是一个比特位

    8个小格8个比特位是一个字节 1b

    1024个字节是1kb

    1024kb是1mb

    1024mb是1g

    基于socket的udp

    #服务端
    import socket
    soc=socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM)
    soc.bind(('127.0.0.1',8009))
    data,addr=soc.recvfrom()
    soc.sendto('xxx'.encode('utf8'),addr)
    特点:
        不需要建立连接,不需要确认
        数据报协议:可以传空
    

    基于socketserver的服务端

    import socketserver
    class MyTcp(socketserver.BaseRequestHandler):
        def handle(self)
        	pass
        
    if __name__ == '__main__':
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8008),MyTcp)
        server.serve.forever()
    

    socketserver源码分析

    import socketserver
    class MyTcp(socketserver.BaseRequestHandler):
        def handle(self):
            # self.server  ThreadingTCPServer的对象:
            # self.request   conn
            #self.client_address   addr
            pass
    if __name__ == '__main__':
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8001),MyTcp)
        # server=socketserver.ThreadingUDPServer(('127.0.0.1',8001),MyTcp)
        '''
            1 ThreadingTCPServer实例化:走__init__方法
                -ThreadingTCPServer(ThreadingMixIn, TCPServer)的__init__方法,没有,走的父                 类:TCPServer(BaseServer)的__init__
                -TCPServer(BaseServer)的__init__又调用了父类的__init__
                    -赋值操作:self.server_address = server_address
                              self.RequestHandlerClass = RequestHandlerClass
                    -数据放到谁当中了?放到了server这个对象中
                -socket.bind()
                -socker.listen()
            2  server.serve_forever()   
                -一堆代码不需要要管:self._handle_request_noblock
                    -request, client_address = self.get_request()
                        -self.get_request()在Tcpserver这个类: self.socket.accept()
                    - self.process_request(request, client_address):ThreadingMixIn类的                                         process_request
                        -开启线程执行ThreadingMixIn类的process_request_thread,执行了        finish_request(request, client_address, self) 在 BaseServer 类中
                            -request :就是咱的连接对象,conn
                            -client_address 客户端ip和端口
                            -self:server对象,实例化得到的server对象
                            -实例化RequestHandlerClass得到一个对象:会走__init__方法
                            -RequestHandlerClass没有,走的BaseRequestHandler类的__init__
                            -会执行handle方法,通信逻辑
        '''
        server.serve_forever()    
    
  • 相关阅读:
    Vue 静态资源文件下载 以pdf为例
    高德地图POI搜索
    矩阵转置(二维列表行列互换)
    列表动态填加元素
    关于判断值为None的处理
    第2章 小程序项目结构配置
    Python 基础编码风格
    Visual Studio — 模块计算机类型“x64”与目标计算机类型“x86”冲突
    Visual Studio — 无法解析的外部符号的几种可能
    Visual Studio — 包含目录、附加包含目录、库目录、附加库目录、附加依赖项之详解
  • 原文地址:https://www.cnblogs.com/aden668/p/11497470.html
Copyright © 2011-2022 走看看