【NodeMCU-ESP8266】Arduino环境下建立UDP服务器及WiFiUDP库常用函数详解

目录

一、UDP协议概述

        1、UDP基本概念

        2、UDP的主要特点

        3、UDP的基本报文格式

​二、ESP8266官方UDP库相关函数详解

三、建立UDP服务器的一般流程

四、ESP8266官方库 UDP 示例程序演示

五、ESP8266官方库 UDP 程序运行说明

        1、将程序编译并上传到开发板。

        2、运行串口网络数据调试器 对UDP服务器进行测试。


一、UDP协议概述

        1、UDP基本概念

        UDP(User Datagram Protocol)——  用户数据报协议,是互联网传输层的一个重要协议。
        UDP为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法,允许应用程序在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。
        UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能。
        由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

        2、UDP的主要特点

        (1)UDP是无连接的协议。即在发送数据前不需要建立连接,发送数据结束也没有连接释放,因此减少了开销和发送数据前的时延。
        (2)UDP使用尽最大努力交付。即不保证可靠交付,因此不需要维护复杂的连接状态表。
        (3)UDP是面向数据报的。对于应用层交付的报文,发送方的UDP在添加首部后直接交付给IP层。UDP对应用层交付的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,应用层给UDP多长报文,UDP就发多长,一次发送一个报文。
        (4)在接收方的UDP,对于IP层交付的UDP用户数据报,在去除UDP首部后也直接交付应用层,不作任何处理,一次交付一个完整的报文。因此,控制报文长度的工作由应用层负责,应用层要选择合适大小的报文。若报文太长,UDP封装后交给IP层,IP层在传输时可能要进行分片处理,减低了IP层的效率。反之,应用层报文太短,效率也低。
        (5)UDP没有拥塞控制机制。因此,网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用很重要,如IP电话,实时视频会议等,要求源主机以恒定的速率发送数据,并且允许在网络拥塞时丢失一部分数据,但不允许数据有太大的时延。
        (6)UDP支持一对一,一对多,多对一和多对多的交互通信。
        (7)UDP的首部开销小,只有8字节,比TCP的20字节的首部短。

        3、UDP的基本报文格式

        UDP报头由4部分组成:
        源端口号:发送方的端口号。
        目的端口号:目的主机的端口号。
        UDP长度:UDP报文的长度,单位字节,包括报头和有效载荷。
        UDP校验和:保证报文完整性和正确性,出错就丢弃。

二、ESP8266官方UDP库相关函数详解

        1. begin(uint16_t port)
        功能:初始化 WiFiUDP库和网络设置,启动WiFiUDP套接字,侦听指定的本地端口
        参数:port,指定侦听的本地端口号
        返回值:1,成功;0,失败,表示没有可用的套接字

// initialize, start listening on specified port. 
// Returns 1 if successful, 0 if there are no sockets available to use
uint8_t begin(uint16_t port) override;

        2.  available()
        功能:返回当前数据包中,可从缓冲区读取的字节数。这是已经到达的数据。
        参数:无
        返回值:当前数据包中可用的字节数
        注意:仅在调用解析数据包函数WiFiUDP.parsePacket()之后,才能成功调用此函数。

// Number of bytes r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专注ESP32和ESP8266开发学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值