import socket server = socket.socket(type=socket.SOCK_DGRAM) # 创建socket对象,括号内选择类型为UDP server.bind(('127.0.0.1', 8080)) # 输入目标ip地址 msg, address = server.recvfrom(1024) # 用于接收客户端的数据 print('信息>>:%s' % msg.decode('utf-8')) # 将接收的数据打印 print('地址>>:%s' % address) # UDP协议传信息需要添加地址 server.sendto('这里是服务端'.encode('utf-8')) # 服务端也可以传出数据给客户端UDP协议服务端模板代码
import socket client = socket.socket(type=socket.SOCK_DGRAM) # 创建socket对象,类型为UDP server_address = ('127.0.0.1', 8080) # 输入服务端地址 client.sendto('这里是客户端'.encode('utf-8'), server_address) # 传递消息给服务端,需要添加服务端的地址 msg, address = client.recvfrom(1024) # 接收服务端的数据 print('消息>>:%s' % msg.decode('utf-8')) # 打印服务端的数据 print('地址>>:%s' % address)UDP协议的特点
1.服务端与客户端不用建立链接,即使客户端异常退出也不影响服务端发送数据
2.UDP不会出现黏包现象,因为UDP多用于短数据发送
多道技术多道技术是一种节约程序占cpu的总时间,提升运行效率的一种程序的运行方式
多道与单道相比
单道技术
所有程序按顺序运行,一个程序结束之后再运行另外一个,耗时长
多道技术
当一个程序在发送数据时,另一个程序同时进行接收数据,耗时短
多道技术的具体方法 切换+保存状态1.CPU在两种下会切换(去执行其他程序)
1.程序自身进入IO操作
输入输出操作
获取用户输入
time.sleep()
读取文件
保存文件
2.程序长时间占用CPU
2.保存状态
每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行
并行
指所有程序同一时间同时进行
(同时进行需要有多个CPU,否则无法实现)
并发
指不同程序交替运行,看上去像是同一时间进行
(可以在单个CPU上实现,数据处理效率极高)
任务的同步与异步同步
指提交任务之后等待任务结果,等待期间不做任何事直到得到结果
(在银行排队,期间只进行排队任务)
异步
指提交任务之后直接去做其他事情,任务结果自动提醒
(在银行排队,取号后做其他事情等待被叫号)
应用程序的阻塞与非阻塞阻塞
阻塞态
指因为某个事件无法执行或无法得到结果,占用CPU运行时间
非阻塞
就绪态
指应用程序已经分配到除了CPU以外的运行资源,只要得到CPU就可以进行
同步/异步和阻塞/非阻塞同步阻塞
效率最低的模式,一直等待进程的消息,期间什么都不做
异步阻塞
效率偏低的模式,在等待消息时只能在规定范围做事
同步非阻塞
效率偏低的模式,等待进程消息期间准备好了其他运行资源,但在消息响应前只能等待
异步非阻塞
效率最高的模式,一边等待进程消息一边处理其他事情,保证运行效率