day 30 多线程 socketserver模块补充

内容回顾:

socket 模块

  服务端:收发数据 - > accept/recv

  客户端:收发数据 -> connect/recv

1. 考试题
1. 解释性和编译型
    编译型:
        先把代码编译成机器码  -> 计算机寄存器去运行  :C语言
        先把代码编译成XXX     -> 计算机找虚拟机执行代码->机器码交给计算技巧去运行        :C语言、java、C#
    解释型:
        边解释边执行
            
            def func():
                print(name)
                
            print(666)
4. 
    列表: ''.join(['xx','ff'])
    字符串:list('xxxxxxxx') / split

5. v[::-1]

7. py2/py3 
    - 编码&字符串 
        字符串:
            py2: 
                unicode         v = u"root"    本质上用unicode存储(万国码)
                (str/bytes)     v = "root"     本质用字节存储
            py3:            
                str                v = "root"     本质上用unicode存储(万国码)
                bytes           v = b"root"    本质上用字节存储
        编码:
            py2: 
                - ascii 
                文件头可以修改:#-*- encoding:utf-8 -*-
            py3:
                - utf-8
                文件头可以修改:#-*- encoding:utf-8 -*-
            
            注意:文件是如何存储?
    - 继承
        py2: 经典类/新式类
        py3: 新式类
    - 范围
        py2:range/xrange
        py3:       range 
    - 输入
        py2: v1 = raw_input('请输入用户名:')
        py3: v2 = input('请输入用户名:')
    - 打印
        py2: print 'xx'
        py3: print(123)
    
        
9. 以后写元组:
    v = (1,2,3,)
    
    Django框架静态文件配置

2. 网络编程

1. 我的电脑有网卡,网卡里有mac地址

2. 我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。
    IP: 192.168.13.84
         IPv4
            00000000.00000000.00000000.00000000
            0~255    0~255    0~255    0~255
         IPv6 
            00000000.00000000.00000000.00000000.00000000.00000000
    子网掩码:255.255.255.0
        192.168.13.84
        255.255.255.0
        
        192.168.12.84
        255.255.255.0
        
    网关IP:192.168.13.1
        
    局域网内、城域网、广域网:
        广播
        单播
        广播风暴
        arp协议
    
3. DNS
    
    网络连接:
        - 域名解析
            www.luffycity.com  47.95.64.113
            www.oldboyedu.com  101.200.195.98
        - 连接
            sk = socket.socket()
            sk.connect(('47.95.64.113',80))
            ...
    问题来了,域名和IP的对应关系在哪里?
        本地:
            Win本地电脑:
                C:\Windows\System32\drivers\etc\hosts
                    11.11.11.11 luffycicy.com
            Linux/Mac电脑:
                /etc/hosts 
        
        DNS服务器:全球顶级DNS服务器13台
            www.luffycity.com  47.95.64.113
            
    
    创业:
        a. 租一个服务器+公网IP
        b. 租域名
            域名+IP解析
        

总结:
    1. DHCP,自动位局域网内容电脑分配IP。
    2. 网关,路由器中连接交换机的口。
    3. IP,4个点分的十进制表示  192.11.111.11
    4. 子网掩码,
            IP: 192.168.13.99
            掩码:255.255.255.0 
            
            将挡住的IP位数作为网段。
            未挡住的部分作为可变的值。
    5. 局域网/城域网/广域网 
    6. arp协议 
    7. DNS 

3. 多线程 
4. socketserver

注意:以后如果想要提高效率可以使用多线程。
    

    """
    pip3 install requests

    """
    import threading
    import requests
    import uuid

    url_list = [
        'https://www3.autoimg.cn/newsdfs/g28/M05/F9/98/120x90_0_autohomecar__ChsEnluQmUmARAhAAAFES6mpmTM281.jpg',
        'https://www2.autoimg.cn/newsdfs/g28/M09/FC/06/120x90_0_autohomecar__ChcCR1uQlD6AT4P3AAGRMJX7834274.jpg',
        'https://www2.autoimg.cn/newsdfs/g3/M00/C6/A9/120x90_0_autohomecar__ChsEkVuPsdqAQz3zAAEYvWuAspI061.jpg',
    ]

    def task(url):
        """"""

        """
        1. DNS解析,根据域名解析出IP
        2. 创建socket客户端    sk = socket.socket()
        3. 向服务端发起连接请求 sk.connect()
        4. 发送数据(我要图片) sk.send(...)
        5. 接收数据            sk.recv(8096)

        接收到数据后写入文件。
        """
        ret = requests.get(url)
        file_name = str(uuid.uuid4()) + '.jpg'
        with open(file_name, mode='wb') as f:
            f.write(ret.content)

    for url in url_list:

        t = threading.Thread(target=task,args=(url,))
        t.start()
考试讲解

猜你喜欢

转载自www.cnblogs.com/xiaobai686/p/11795270.html