内容回顾:

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()

考试讲解

多线程:

  就是分出多个我,取同时执行任务,提高程序的执行效率。

import threading
def task(a,b,c):pass
def play():psaa t1 = threading.Thread(target=task,args=(1,2,3,)) #分身一(创建一个线程,让线程取执行函数)
t1.start() #执行 t2 = threading.Thread(target=play) #分身二
t2.start()
#创建的线程位子线程,直接往下走的是函数的主线程
# by luffycity.com
import time
import threading def task(a1,a2,a3):
time.sleep(2)
print('拿快递') def play():
print('和女朋友去耍') def wm():
print('去拿外卖') # 创建一个线程
# 让该线程去执行任务:函数
t1 = threading.Thread(target=task,args=(1,2,3,))
# 去执行吧
t1.start() # 创建一个线程
# 让该线程去执行任务:函数
t2 = threading.Thread(target=play)
# 去执行吧
t2.start() # 创建一个线程
# 让该线程去执行任务:函数
t3 = threading.Thread(target=wm)
# 去执行吧
t3.start() print('玩扇子')
print('煽风点火')
print('耍贱...')

代码详细

socket和线程的配合:

import time
import socket
import threading def task(conn):
time.sleep(20)
data = conn.recv(1024)
print(data)
conn.close() server = socket.socket()
server.bind(('192.168.13.84',8001,))
server.listen(5) while True:
conn,addr = server.accept()
t = threading.Thread(target=task,args=(conn,))
t.start()
 import socketserver

 class MyServer(socketserver.BaseRequestHandler):
def handle(self):
self.request
self.client_address
self.server
# 编写代码 server = socketserver.ThreadingTCPServer(('192.168.13.84',8001,),MyServer)
"""
server.server_address = server_address
server.RequestHandlerClass = RequestHandlerClass
server.__is_shut_down = threading.Event()
server.__shutdown_request = False
server.socket = socket....
- socket.bind
- socket.listen
""" server.serve_forever()

解析socket源码

uuid模块

  每次执行都会生成一个随机字符串

  应用:当文件名(接受的文件随机赋值一个文件名)

import uuid

v = str(uuid.uuid4())
print(v)

最新文章

  1. Windows Programming ---- Beginning Visual C#
  2. 单调队列 && 斜率优化dp 专题
  3. Github 下载单个文件
  4. webService----wsimport调用方式
  5. 01_蚂蚁感冒(第五届蓝桥预赛本科B组第8题 nyoj 990)
  6. C++学习网站总结(转)
  7. viewpager+layout布局文件随数据多少创建滑动页面
  8. Redis+Restful 构造序列号和压力测试【后续】
  9. Linux 系统目录结构说明
  10. FloatingWindow 悬浮窗开源项目总结
  11. 【爬虫】在Xpath中使用正则
  12. CentOS云厂商清单
  13. css瀏覽器私有前綴名
  14. BZOJ1801 [Ahoi2009]chess 中国象棋 动态规划
  15. 《Linux 性能及调优指南》1.1 Linux进程管理
  16. s4-介质访问控制子层-1 MAC子层
  17. 有关 WCF 的一些错误处理
  18. 决策树-Cart算法二
  19. C语言复习20170826
  20. BZOJ1007 水平相交直线

热门文章

  1. Spring Cloud gateway 网关服务 一
  2. Nginx专题(1):Nginx之反向代理及配置
  3. 使用uni-app开发微信小程序
  4. Alibaba Java Coding Guidelines,以后的Java代码规范,就靠它了
  5. 学习笔记01HTML
  6. C++学习笔记5_智能指针
  7. Android 常见内存泄露 & 解决方案
  8. Django学习day5——创建app
  9. Java类、对象、变量、方法
  10. 在线热备份数据库之innobackupex 增量备份InnoDB