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()    
    
  • 相关阅读:
    HTTP和HTTPS协议
    Django后台缓存运用,提高并发
    Python用摘要算法生成token及检验token
    Django框架rest_framework中APIView的as_view()源码解析、认证、权限、频率控制
    跨域请求
    Django中的缓存机制
    Django框架之Auth模块
    Django框架之中间件、CSRF跨站请求伪造
    Django框架之Cookie和Session组件
    Django框架之Forms组件(基于注册功能)
  • 原文地址:https://www.cnblogs.com/aden668/p/11497470.html
Copyright © 2011-2022 走看看