没有合适的资源?快使用搜索试试~ 我知道了~
AN0011-RT-Thread-网络开发应用笔记1
需积分: 0 0 下载量 180 浏览量
2022-08-03
12:57:50
上传
评论
收藏 1.14MB PDF 举报
温馨提示
试读
35页
第二部分为文件系统层,在 RT-Thread 系统中,通过 DFS 文件系统程序可以使用标准 第三部分为套接字抽象层,通过它 RT-Thread 系统能够适配下
资源详情
资源评论
资源推荐
网络开发应用笔记
RT-THREAD 文档中心
上海睿赛德电子科技有限公司版权 @2019
WWW.RT-THREAD.ORG
Friday 28
th
September, 2018
目录
目录 i
1 本文的目的和结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 本文的目的和背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 本文的结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 网络框架介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 API 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.1 BSD Socket API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 创建套接字(socket) . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 绑定套接字(bind) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4 监听套接字(listen) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.5 接收连接(accept) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.6 建立连接(connect) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.7 TCP 数据发送(send) . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.8 TCP 数据接收(recv) . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.9 UDP 数据发送(sendto) . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.10 UDP 数据接收(recvfrom) . . . . . . . . . . . . . . . . . . . . . . . . 7
3.11 关闭套接字(closesocket) . . . . . . . . . . . . . . . . . . . . . . . . 7
3.12 按设置关闭套接字(shutdown) . . . . . . . . . . . . . . . . . . . . . 7
3.13 设置套接字选项(setsockopt) . . . . . . . . . . . . . . . . . . . . . . 8
3.14 获取套接字选项(getsockopt) . . . . . . . . . . . . . . . . . . . . . . 9
3.15 获取远端地址信息(getpeername) . . . . . . . . . . . . . . . . . . . . 9
3.16 获取本地地址信息(getsockname) . . . . . . . . . . . . . . . . . . . . 10
3.17 配置套接字参数(ioctlsocket) . . . . . . . . . . . . . . . . . . . . . . 10
3.18 调试 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.18.1. ifcong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.18.2. netstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.18.3. dns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 准备工作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1 硬件连接准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 ENV 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 网络测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 基础应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1 tcpclient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.1. 源码解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.2. 运行结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2 udpclient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.1. 源码解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.2. 运行结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6 高级应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.1 NTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.2 MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
网络开发应用笔记 1 节 本文的目的和结构
!!! abstract “摘要” 本应用笔记描述了如何在 RT-Thread 中利用标准化 API 来开发网
络应用。
1 本文的目的和结构
1.1 本文的目的和背景
越来越多的单片机需要接入以太网来收发数据,市面上也有非常多的接入方案,可以用
单片机加自带硬件协议栈的 PHY 芯片来接入网络,也可以单片机跑软件协议栈加 PHY 芯
片来接入网络,不同的接入方案需要调用不同的 API,降低了上层应用的可移植性。
为了方便用户开发网络应用,RT-Thread 中引入了网络框架。并提供标准化 API 接口
用于开发网络应用,同时,RT-Thread 还提供了数量丰富的网络组件包,方便用户快速开发
自己的应用。
1.2 本文的结构
本文首先介绍了 RT-Thread 网络框架和标准化 API,然后介绍利用这些 API 实现的基
础应用:tcp client 和 udp client,最后介绍了 RT-Thread 提供的网络组件包,并给出了在正
点原子 STM32F4 探索者开发板上运行 NTP(通过网络获取时间)和 MQTT(通过 MQTT
收发数据)的代码示例。
2 网络框架介绍
RT-Thread 提供了一套网络管理框架,如网络框架图所示:
网络开发应用笔记 1
网络开发应用笔记 3 节 API 介绍
图 1: sal_frame
最顶层是网络应用层,提供一套标准 BSD Socket API ,如 socket、connect 等函数,用
于系统中大部分网络开发应用。
第二部分为文件系统层,在 RT-Thread 系统中,通过 DFS 文件系统程序可以使用标准
的接口函数实现不同的文件系统操作。网络套接字接口也是支持文件系统结构,使用网络套
接字接口时创建的网络套接字描述符由文件系统统一管理,所以网络套接字描述符也可使
用标准文件操作接口,文件系统层为上层应用层提供的接口有:read、write、close、poll/
select 等。
第三部分为套接字抽象层,通过它 RT-Thread 系统能够适配下层不同的网络协议栈,
并提供给上层统一的网络编程接口,方便不同协议栈的接入。套接字抽象层为上层应用层提
供接口有:accept、connect、send、recv 等。
第四部分为协议栈层,该层包括几种常用的 TCP/IP 协议栈,例如嵌入式开发中常用
的轻型 TCP/IP 协议栈 lwIP 以及 RT-Thread 自主研发的 AT Socket 网络功能实现等。这
些协议栈或网络功能实现直接和硬件接触,完成数据从网络层到传输层的转化。
RT-Thread 的网络应用层提供的接口主要以标准 BSD Socket API 为主,这样能确保程
序可以在 PC 上编写、调试,然后再移植到 RT-Thread 操作系统上。
3 API 介绍
网络开发应用笔记 2
剩余34页未读,继续阅读
陌陌的日记
- 粉丝: 12
- 资源: 319
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0