udp网络通信
1.网络概念
1.1 IP地址
ip 是网络中一台计算机唯一标识
ip地址
xxx.xxx.xxx.xxx 点分式 由网络号 主机号组成
1.2 端口
端口是操作系统分配给当前所有应用程序的一个编号,标识系统中的一个应用程序
网络通信中采用 ip+端口的组合传递数据
端口一共有2的16次方个,其中 知名端口有1024个其余为动态端口
知名端口中常用:
http 80
ssh 20
https 443
动态端口中:
MySQL 3306
2.udp
用户数据报协议
2.1udp特点
无连接 易丢包 不可靠
udp发送数据之前不需要建立连接所有具有以下特点
无连接
资源开销小
传输速度快
udp每个数据包最大是64K
优点:
传输速度快
不需要连接,资源开销小
缺点:
传输数据不可靠,容易丢数据包
没有流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所有接收方需要及时接收数据。
2.2udp适用场景
广播
视频
3.socket
3.1套接字
用于网络通信
3.2 编解码
编码 encode()
解码 decode()
4.udp套接字
4.1 创建及关闭
导入包及创建
importsocket
u_s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
绑定端口
不绑定系统会随机分配
u_s.bind(("",8787))# 绑定一个地址 元组格式 (ip,端口) ip一般为"" 即绑定本机所有ip地址
广播
u_s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,True)#把广播属性设置为True,否则 ip地址为广播地址时会报错
发送数据
ip=input("输入ip")#ip需要是字符串
port=eval(input("输入端口"))#port需要是数字
data=input("输入发送信息")
u_s.sendto(data.encode(),(ip,port))# data要是字节 地址为元组格式 (ip,port)
接收
data,ip_port=u_s.recvfrom(1024)# 参数 为本次接收大小 返回为一个元组 [0]数据 [1] 地址
print(ip_port[0]+":"+data.decode())
关闭
u_s.close()
网友评论