内容回顾:
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()