当前位置: 首页 > news >正文

江西网站设计欣赏网页模板免费版

江西网站设计欣赏,网页模板免费版,wordpress ecommerce,程序界面设计目录 1 UDP协议简介 2 UDP协议特点 3 UDP应用场景 4 UDP报文传输流程 5 UDP协议报文 6 实现过程 7 运行结果 8 总结 本篇文章,我们将详细介绍如何在W55MH32芯片上面实现UDP通信。并通过实战例程,为大家讲解如何使用UDP进行数据回环测试。 该例程…

目录

1 UDP协议简介

2 UDP协议特点

3 UDP应用场景

4 UDP报文传输流程

5 UDP协议报文

6 实现过程

7 运行结果

8 总结


本篇文章,我们将详细介绍如何在W55MH32芯片上面实现UDP通信。并通过实战例程,为大家讲解如何使用UDP进行数据回环测试。

该例程用到的其他网络协议,例如DHCP,请参考相关章节。有关W55MH32的初始化过程,也请参考Network Install章节,这里将不再赘述。

1 UDP协议简介

用户数据报协议(UDP,User Datagram Protocol)是OSI模型中传输层的核心协议之一。它是一种无连接的、面向数据报的传输协议,用于在IP网络中进行高效的数据传输。与TCP协议相比,UDP更简单、轻量,提供最基本的传输功能。

2 UDP协议特点

无连接性:UDP不需要在传输数据前建立连接,发送方可以直接发送数据到目标地址,接收方也无需确认接收到数据。

数据报的独立性:数据以独立的数据报形式发送,每个数据报包含完整的消息信息。

高效性:UDP没有流量控制、拥塞控制和重传机制,因此开销小,传输效率高,适合对实时性要求较高的应用。

不可靠性:UDP不保证数据可靠传输,可能出现数据丢失、重复或乱序。

支持广播和多播:UDP可以进行广播和多播数据发送,非常适合一对多的通信场景。

简单的头部格式:UDP头部只有8字节,包括源端口、目标端口、长度和校验和。

3 UDP应用场景

接下来,我们了解下在W55MH32上,可以使用UDP协议完成哪些操作及应用呢?

  1. 实时数据传输:在工业自动化控制、网络摄像头等场景下使用W55MH32实现实时数据传输。
  2. 设备发现和自动配置:通过发送广播包给W55MH32来实现设备发现和自动配置功能。
  3. 广播和多播通信:通过广播和多播通信方式来实现一对多通信。例如状态同步和多设备控制。
  4. 数据采集:需要高频率传输小数据包的应用场景。例如温湿度传感器的状态更新。

4 UDP报文传输流程

  1. 发送ARP报文,确认对方地址在线
  2. 获取数据信息,并通过UDP传输。
  3. 添加UDP头部信息
  4. 数据报通过IP协议传递到目标地址。
  5. 接收方从目标端口接收数据报

5 UDP协议报文

  • 源端口:发送方的端口号;
  • 目的端口:接收方的端口号;
  • 报文长度:即整个 UDP 报文的长度,包括头部和数据,单位为字节。
  • 检验和:校验和;

UDP报文实例:

C0A8 0001 C0A8 0002 1F90 1F91 0021 F7DF 4865 6C6C 6F2C 2055 4450 21

  1. IP部分(前16字节):
    1. C0A8 0001: 源IP地址(192.168.0.1)
    2. C0A8 0002: 目标IP地址(192.168.0.2)
  2. UDP部分(后部分):
    1. 1F90: 源端口号(8080)
    2. 1F91: 目标端口号(8081)
    3. 0021: 报文长度(33字节)
    4. F7DF: 校验和(校验数据完整性)
    5. 4865 6C6C 6F2C 2055 4450 21: 数据部分("Hello, UDP!" 的ASCII表示)

在W55MH32中,UDP协议已在内部硬件协议栈实现,所以我们只需要读取和写入对应寄存器的值即可实现发送和接收数据,无需手动组包。

6 实现过程

接下来,我们在W55MH32上实现UDP回环测试,loopback_udps()函数是实现UDP回环测试功能的函数。

注意:测试实例需要PC端和W55MH32处于同一网段。

这个函数需要主循环中调用,如下图所示。

while (1)
{loopback_udps(SOCKET_ID, ethernet_buf, local_port);
}

loopback_udps()需要传入3个参数,分别是socket号,socket缓存以及源端口号

loopback_udps()函数内容如下:

/*** @brief   udp server mode loopback test* @param   sn:    socket number* @param   buf:   Data sending and receiving cache* @param   port:  Local port* @return  value for SOCK_ERRORs,return 1:no error*/
int32_t loopback_udps(uint8_t sn, uint8_t *buf, uint16_t port)
{int32_t  ret;uint16_t size, sentsize;uint8_t  destip[4];uint16_t destport;switch (getSn_SR(sn)){case SOCK_UDP:if ((size = getSn_RX_RSR(sn)) > 0){if (size > DATA_BUF_SIZE)size = DATA_BUF_SIZE;ret      = recvfrom(sn, buf, size, destip, (uint16_t *)&destport);buf[ret] = 0x00;printf("recv form[%d.%d.%d.%d][%d]: %s\r\n", destip[0], destip[1], destip[2], destip[3], destport, buf);if (ret <= 0){
#ifdef _LOOPBACK_DEBUG_printf("%d: recvfrom error. %ld\r\n", sn, ret);
#endifreturn ret;}size     = (uint16_t)ret;sentsize = 0;while (sentsize != size){ret = sendto(sn, buf + sentsize, size - sentsize, destip, destport);if (ret < 0){
#ifdef _LOOPBACK_DEBUG_printf("%d: sendto error. %ld\r\n", sn, ret);
#endifreturn ret;}sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.}}break;case SOCK_CLOSED:
#ifdef _LOOPBACK_DEBUG_// printf("%d:UDP loopback start\r\n",sn);
#endifif ((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn)return ret;
#ifdef _LOOPBACK_DEBUG_printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port);
#endifbreak;default:break;}return 1;
}

进入回环测试程序后,会执行一个socket状态机,在socket状态机中,会执行以下步骤:

步骤1:打开socket

当socket处于SOCK_CLOSED状态时(即关闭状态),将该socket设置为UDP模式并打开。

步骤2:监听接收数据并回环数据

当socket处于SOCK_UDP状态时(即已打开socket并配置为UDP模式),监听Sn_RX_RSR寄存器。

当Sn_RX_RSR寄存器的值大于0时,则说明已经接收到UDP数据,先通过recvfrom()函数取出接收到的UDP数据。

然后通过sendto()函数将接收到的数据回环发送出去。

7 运行结果

烧录例程运行后,首先进行了PHY链路检测,然后是DHCP获取网络地址结果,最后是进行UDP回环测试,如下图所示:

接下来我们打开一个网络调试工具,例如SocketTester,设置为UDP模式,选择自己的IP地址和端口后打开socket,然后设置目标地址和目标端口为W55MH32的IP地址和端口号,最后向W55MH32发送数据进行回环测试的流程。

可以看到,W55MH32这边接收到了来自PC端发送的数据并打印了出来,SocketTester界面也看到了W55MH32的回环数据,如下图所示:

当使用UDP广播模式向W55MH32发送数据时,只需要将SocketTester上的目标地址改为W55MH32所在网段的广播地址(192.168.1.255)即可。以下为UDP广播发送给W55MH32的示例图:

8 总结

本文介绍了在 W55MH32 芯片上实现 UDP 通信及数据回环测试的方法。阐述了 UDP 协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。

下一篇将讲解在该芯片上实现 UDP 组播通信及回环测试,介绍相关原理和实现步骤。敬请期待!

http://www.dtcms.com/a/562449.html

相关文章:

  • 编译原理笔记汇总
  • 怎么免费建立自己的网站步骤域名注册网站制作
  • 长春网站建设wang亚马逊购物网站
  • html5 网站 优势工程公司简介
  • java学习--类和对象的关系
  • 丽江建设信息网站Divi WordPress企业建站主题
  • 阿里云服务器做电影网站缩我短链接生成器
  • 网站建设计划书范本网站开发学什么语音
  • 【C++/STL】set和multiset的使用
  • 淘宝哪些做网站关键词排名的有用吗建设一个营销型网站
  • 2025python学习笔记Part2
  • 简单介绍一下信息摘要/数字签名
  • 重庆seo推广外包漳州网站建设优化
  • 高等院校网站建设方案搜索引擎官网
  • 网站服务器是指什么重庆网站服务器
  • 旅游网站建设步骤北京网站开发公司有哪些
  • AOI在医疗设备检测领域中的应用
  • 重庆网站seo诊断网站被抄袭
  • c# 手机版网站开发公众号小程序开发公司
  • 网站建设会议讲话西安百度网站快速排名
  • 有批量做基因结构的网站吗杭州网络排名优化
  • 山东网站制作公司排名大数据营销系统软件
  • 建一个网站需要多少钱网站怎么做的如何更改网站关键词
  • 织梦首饰网站模板解答网站内容优化策略
  • 实现qq邮箱发送验证码登录
  • 泰安集团网站建设方案南宁百度关键词排名公司
  • 链家在线网站是哪个公司做的网络营销课程培训课程
  • PostgreSQL 16 性能调优指南
  • 杭州群游科技网站做的魔域网站app的区别是什么意思
  • 网站开发质保金百度推广后台登陆首页