UDP介绍及实例

我们先介绍一下UDP

UDP — 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

UDP特点:

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。 UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。

udp网络程序-发送数据 流程
客户端

  1. 创建客户端套接字
  2. 发送/接收数据
  3. 关闭套接字

这里写图片描述

举例说明:

import socket
# 1. 创建套接字
udpsocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 2. 准备接收方的地址
udpadd=('192.168.1.67',8080)
# 3.从键盘获取数据
udpData=input('请输入发送的信息:')
# 4.发送
udpsocket.sendto(udpData.encode('utf-8'),udpadd)
# 5.关闭
udpsocket.close()

udp网络程序-接收数据

import socket
# 1. 创建套接字
udpsocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

# 接收
while True:
    data_info,ip_info = udpsocket.recvfrom(1024)
    print(data_info.decode('gbk'))
    print(ip_info)
    # 3、关闭套接字
    udpsocket.close()

此时端口号是随机的,我们也可以绑定端口比如像110一样有固定的端口

import socket
# 1. 创建套接字
udpsocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定本地
udpsocket.bind(('',8082))
# 接收
data_info,ip_info = udpsocket.recvfrom(1024)
print(data_info.decode('gbk'))
print(ip_info)
 # 3、关闭套接字
udpsocket.close()

总结:

  1. 一个udp网络程序,可以不绑定,此时操作系统会随机进行分配一个端口,如果重新运行次程序端口可能会发生变化

  2. 一个udp网络程序,也可以绑定信息(ip地址,端口号),如果绑定成功,那么操作系统用这个端口号来进行区别收到的网络数据是否是此进程的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值