Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。
UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
udp网络程序模型图。
接下来,我们用 python 代码实现udp数据的发送和接收。
一、udp网络程序,发送数据
流程:
- 创建客户端套接字
- 发送数据
- 关闭套接字
import
sendto 的第一个参数需要一个字节类型,所以需要编码一下,不能单单传一个字符串。
我们为了验证写的程序是否正确,可以使用网络调试助手来验证。
在上面的例子中,网络调试助手里的“本机主机地址”应该填写作为服务方电脑的ip地址。我们这里在一台电脑上测试,所以写了代码里的ip地址。
但是大家要理解成是另一台服务器的电脑的ip。
端口就选择一个号大一点的,不要占用主流端口。
二、udp网络程序,接收数据
流程:
- 创建套接字
- 绑定本地自己的信息
- 接收数据
- 关闭套接字
接收数据最重要的一步,就是要绑定端口。
import
将收到的数据解码时要注意,和客户端编码的格式要一样。
在选择UDP作为传输协议时必须要谨慎。
在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。
但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
比如我们聊天用的ICQ和QQ就是使用的UDP协议。