第三个A类问题-Arduino_UDP通信问题

Arduino_UDP通信问题

1.问题描述

在Arduino-ESP32编写的UDP通信中,利用udp.write(data,len)发送图片会出现图片显示不全

2.问题出现原因

Arduino-ESP32封装的UDP函数udp.write(data,len)中的data无论是多大的数据,函数只会发送前1436个数据,这样导致每次只传输图片数据流的前1436个数据,后面所有的数据被遗弃。

3.问题解决办法

当需要传输数据量比较大的数据时,可以将数据分片发送,设置每片的数据大小为1430或者其他大小,然后一片一片发送,接收端需要对应对一片数据进行判断。判断的方法一般有一下几种:

​ ① 接收端根据发送端进行的切片数量开启同样数量的端口来接收发送段的数据

​ 比如需要传输1920×1080的视频,通过一个端口进行数据发送会导致画面出现卡顿现象,可以通过将一个图片等宽截成20份通过20个链路发送过来,这样传过来的视频会比较流畅。还可以通过并行加速技术提高速度。

​ ② 发送端一片一片的发送数据,接收方只需要一个端口进行数据接收

​ 当需要发送的视频流对画质的要求不高时,我们不需要开启多个端口同时进行接收,一个端口即可完成图片的传输,此时可以将图片切片发送,接收端将收到的多片数据拼接还原出图片,这种方法需要加上开始接收的标记和停止接收的标记。