
LwIP
_杰杰_
一个超级可爱的杰杰ღ( ´・ᴗ・` )
展开
-
MQTT移植到stm32开发板——使用FreeRTOS操作系统
手把手教你将MQTT客户端移植到stm32开发板上,使用野火stm32f429官方开发板作为移植实验,使用lwip+以太网连接到云平台。原创 2020-06-26 21:10:03 · 10590 阅读 · 8 评论 -
MQTT移植到stm32开发板——使用TencentOS tiny操作系统
手把手教你将MQTT客户端移植到stm32开发板上,使用TencentOS tiny官方开发板——TencentOS_tiny_EVB_MX_Plus开发板作为移植实验,使用wifi模块连接到云平台。原创 2020-06-23 23:51:08 · 6343 阅读 · 4 评论 -
MQTT移植到stm32开发板——使用RT-Thread操作系统
文章目录ENV介绍env工具下载安装通过env移植MQTT客户端打开 env 控制台打开env并更新软件包列表移植MQTT客户端导出独立的MQTT客户端工程ENV介绍env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。env 工具包含了 RT-Thread 源代码开发编译环境和原创 2020-06-21 22:41:09 · 5438 阅读 · 0 评论 -
mqttclient连接到OneNET云平台
文章目录mqttclient连接到OneNET云平台使用OneNET测试连接手动安装相关的依赖包拉取mqttclient仓库简单介绍mqttclient仓库文件夹编译运行代码使用到的APImqttclient连接到OneNET云平台有了前面连接百度云的经验,废话不多说,直接使用OneNET,OneNET平台应该是最开放,对开发者最友好的平台了。使用OneNET首先注册与登陆OneNET,然后进入开发者中心:https://open.iot.10086.cn/develop/global/produc原创 2020-06-15 23:07:02 · 6462 阅读 · 8 评论 -
mqtt连接百度天工物接入平台
mqtt连接到百度天工物接入百度天工物接入简介物接入(IoT Hub)是面向物联网领域开发者的全托管云服务,通过主流的物联网协议(如MQTT)进行通信,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。支持亿级并发连接和消息数,支持海量设备与云端安全可靠的双向连接,无缝对接天工平台和百度云的各项产品和服务。物接入分为设备型和数据型两种项目类型,我们在这里使用数据型项目类型,传输一些温湿度数据,同时可以无缝对接时序数据库TSDB、物可视等,将数据实时显示出来,同时我们采用MQTT协议与云端原创 2020-06-15 23:05:09 · 4855 阅读 · 1 评论 -
一个高性能、高稳定性的跨平台MQTT客户端——mqttclient设计与实现方式
文章目录mqttclient设计与实现方式设计思想API接口MQTT客户端的核心结构mqttclient实现申请一个mqtt客户端释放已申请的mqtt客户端设置MQTT客户端的信息连接服务器订阅报文取消订阅发布报文内部线程核心的处理函数发布应答与发布完成报文的处理订阅应答报文的处理取消订阅应答报文的处理来自服务器的发布报文的处理发布收到与发布释放报文的处理mqttclient设计与实现方式设计思想整体采用分层式设计,代码实现采用异步设计方式,降低耦合。消息的处理使用回调的方式处理:用户指定订原创 2020-06-15 23:01:15 · 6717 阅读 · 4 评论 -
一个高性能、高稳定性的跨平台MQTT客户端——mqttclient配置及裁剪工具
文章目录mqttclient配置及裁剪工具salof相关的配置使用mqttclient裁剪配置工具mqttclient配置及裁剪工具MQTT_TOPIC_LEN_MAX配置客户端支持最大的主题名长度,主题是支持通配符的,如果主题太长则会被截断,默认值为64。 #define MQTT_TOPIC_LEN_MAX 64MQTT_ACK_HANDLER_NUM_MAX配置mqtt等待应答列表的最大记录个数,对于qos1、qos2服务质量有要求原创 2020-06-15 22:59:25 · 2006 阅读 · 0 评论 -
一个高性能、高稳定性的跨平台MQTT客户端——mqttclient代码生产工具介绍
文章目录mqttclient代码生产工具介绍连接参数配置订阅主题相关的代码配置发布消息相关的代码配置生成代码mqttclient代码生产工具介绍mqttclient代码生产工具主要是用于配置MQTT的参数,并且生成相应的代码,因为是可视化的配置,极易使用。地址:https://jiejietop.gitee.io/mqtt/index.html与此同时改工具页面还包含了mqttclient的API接口介绍及示例,通过它们就能知道这个工具应该配置了什么内容。连接参数配置首先连接参数代表着MQT原创 2020-06-15 22:55:44 · 1517 阅读 · 0 评论 -
你不得不看的图文并茂的MQTT协议通信过程!!!
图文并茂讲解MQTT协议通信过程,深入理解MQTT协议工作过程。原创 2020-06-13 20:58:59 · 16419 阅读 · 1 评论 -
MQTT协议简介及协议原理
带你看看MQTT协议简介及协议原理原创 2020-06-13 15:24:00 · 13446 阅读 · 5 评论 -
一个基于socket API之上的跨平台MQTT客户端,支持qos2
整体框架备注:目前只实现了linux平台设计思想整体采用分层式设计,代码实现采用异步设计方式,降低耦合。消息的处理使用回调的方式处理:用户指定[订阅的主题]与指定[消息的处理函数]不对外产生依赖APImqttclient拥有非常简洁的api接口int mqtt_keep_alive(mqtt_client_t* c);int mqtt_init(mqtt_client_...原创 2020-01-05 19:09:39 · 2395 阅读 · 0 评论 -
LwIP中TCP协议的实现
TCP控制块与其他协议一样,为了描述TCP协议,LwIP定义了一个名字叫tcp_pcb的结构体,可以称之为TCP控制块,其内定义了大量的成员变量,基本定义了整个TCP协议运作过程的所有需要的东西,如发送窗口、接收窗口、数据缓冲区。超时处理、拥塞控制、滑动窗口等等。/** TCP协议控制块 */struct tcp_pcb { IP_PCB;/** 协议特定的PCB成员 */ TC...原创 2019-09-17 00:50:08 · 7680 阅读 · 0 评论 -
TCP状态转移
TCP状态转移在前一篇文章已经介绍了TCP协议的三次握手和四次挥手。总的来说,TCP通信过程包括三个步骤:建立TCP连接(三次握手)、数据传输、终止TCP连接(四次挥手)。但是在这个通信过程中,有非常复杂的状态问题,下面就来了解一下进行TCP协议通信时候的状态转移。TCP协议根据连接时接收到报文的不同类型,采取相应动作也不同,还要处理各个状态的关系,如当收到握手报文时候、超时的时候、用户主动关...原创 2019-09-11 23:01:08 · 562 阅读 · 0 评论 -
【面试必考】TCP协议“三次握手”与“四次挥手”
引言从上一篇文章我们就知道TCP协议是提供面向连接的服务,无论哪一方向另一方发送数据之前,都必须先在双方之间建立连接,俗称“握手”,数据传送完成后要终止连接,俗称“挥手”。因此TCP是一种可靠的传输服务,但是正因为这样,也不可避免的增加了许多额外的开销,比如确认,流量控制等,那么我们今天就来说说它是怎么建立连接与终止连接的!“三次握手”首先建立连接的过程是由客户端发起,而服务器无时无刻都在等...原创 2019-09-06 13:35:04 · 1786 阅读 · 0 评论 -
TCP报文段首部结构分析
TCP报文段结构分析TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。TCP报文段如APR报文、IP数据报一样,也是由首部与数据区域组成,TCP首部内容很丰富,各个字段都有特定的含义,一般来说TCP首部只有20个字节,TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项字段(N是整数)。因此TCP首部的最小长度是20字节。在LwIP中,TCP首部采用一个名字...原创 2019-09-02 20:37:08 · 7007 阅读 · 1 评论 -
TCP协议扫盲篇
文章目录TCP协议简单了解TCP协议的特性面向连接正面确认数据分割数据缓冲全双工通信流量控制TCP协议简单了解TCP(Transmission Control Protocol,传输控制协议),它是最常用传输层协议,也是最稳定传输层协议,很多上层应用都是依赖于TCP进程传输数据。TCP 属于传输层协议,它为应用层提供了可靠的字节流服务。在网络协议栈中对它的描述要比对其它协议的描述复杂的多,这...原创 2019-08-28 19:27:26 · 511 阅读 · 0 评论 -
深入学习IP数据报发送过程
IP协议的功能回顾一下前面的文章所提及的知识点,总结一下IP协议的功能,得到以下结论:编址(目标端的IP地址),数据传输的过程当中就必须表明要发送目标端的IP地址寻址和路由(根据对方的IP地址,寻找最佳路径传输信息);数据报的分片和重组。传递服务是不可靠的(IP协议只是尽自己最大努力去传输数据包),它也是无连接的协议IP数据报发送IP协议是网络层的主要协议,在上层传输协议(如TC...原创 2019-08-26 20:15:55 · 3863 阅读 · 0 评论 -
TCP/IP协议栈扫盲班
前言本文的东西是基础理论知识,大多数来源于网络,因此不必记住,前面的操作系统的文章我不想更新了,现在想写一写网络相关的文章,本篇文章是第一篇,仅传递网络相关知识的概念,不必牢记~什么是TCP/IP协议简单来说TCP/IP协议是网络中所有相关协议簇的简称,它是众多网络协议的集合,这一类协议簇是有非常多的协议,如常见的:ARP/TCP/UDP/IP/ICMP/IGMP/HTTP/DNS/DHCP...原创 2019-02-28 13:37:04 · 1785 阅读 · 0 评论 -
网络底层知识
前言从前一篇文章,我们也知道大概的网络相关知识,网络这个系列文章就从底层往顶层讲解,本篇文章就来接触一下网络底层的相关知识。概述网络中的数据递交当用户发送数据时,将数据向下交给传输层,这是处于应用层的操作,应用层可以通过调用传输层的接口来编写特定的应用程序,并且TCP/IP协议栈一般也会包含一些简单的应用协议如 Telnet 远程登录、FTP文件传输、SMTP 邮件传输协议等,这些协议有自己...原创 2019-03-05 21:15:06 · 2875 阅读 · 0 评论 -
ARP协议原理
引言从前一篇文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:那么什么是ARP协议呢?初始ARPARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网...原创 2019-03-12 20:03:05 · 47658 阅读 · 9 评论 -
IP数据报格式分析
文章目录前言NAT网络地址转换IP数据报前言在前面的文章中,我们知道,如果一个主机(开发板)想要访问外网,那必须经过NAT地址转换,就拿我们的电脑来说,它想要访问外网,那就必须将电脑的IP地址转换为公网的IP地址。我们电脑目前使用的IP地址是专用地址,如192.168.0.66等,大家可以结合前面的文章了解一下什么是专用地址,什么是公网的IP地址。而让IP地址发生转换的就是NAT——网络地址...原创 2019-04-07 17:50:27 · 10629 阅读 · 2 评论 -
IP协议基础扫盲班
写在前面首先呢,很感谢大家一致以来的支持,我的公众号正式改名为“物联网IoT开发”,公众号的头像也换了,换成一个制作的矢量图头像,一个芯片跟一个网络地球,本来想改名字为“芯之物联”的,但是想了想,还是直白一点,就物联网IoT开发好了,在这里我会跟大家一起学习物联网相关的知识,此网络系列文章就作为新的开端吧。因为我写的文章也是蛮多的,质量也是还可以(自认为的哈哈哈),其实即使是没更新文章,我的公众...原创 2019-04-07 18:11:56 · 639 阅读 · 0 评论 -
IP地址相关知识深入了解~
问题解答问题1:小编0.0.0.0与127.0.0.1有什么区别?其实这个问题问的还是有点不够深度,因为,那我来补充一下:localhost、127.0.0.1、0.0.0.0和本机地址的区别localhostlocalhost其实是域名,对于IPv4,windows默认将localhost指向127.0.0.1,而如果是IPv6,将指向[::1],但是localhost并不等于...原创 2019-04-07 18:14:02 · 1765 阅读 · 0 评论 -
LwIP中的ARP协议实现(1)
前言从前面的文章,我们知道,ARP协议的核心是ARP缓存表,而ARP协议的实质就是对缓存表项(entry)的建立、更新、查询等操作。那么,LwIP中是是怎么实现ARP协议的呢?ARP缓存表的数据结构LwIP使用一个arp_table数组描述ARP缓存表,数组的内容是表项的内容,每个表项都必须记录一对IP地址与MAC地址的映射关系,此外还有一些基本的信息,如表项的状态、生命周期(生存时间...原创 2019-03-28 22:00:44 · 2198 阅读 · 0 评论 -
LwIP中的ARP协议实现(2)
ARP缓存表的超时处理ARP表项的生存时间是5分钟,而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项。这就需要ARP层有一个超时处理函数对ARP进行管理,这些操作都是根据ARP表项的ctime字段进行的,它记录着对应表项的生存时间,而超时处理函数是etharp_tmr(),它是一个周期性的超时处理函数,每隔1秒就调用一次,当ctime的值...原创 2019-03-29 11:30:15 · 1419 阅读 · 0 评论 -
LwIP的ARP协议实现(3)
发送ARP请求包发送ARP请求包的时候,需要填充已知的目标IP地址、源MAC地址、源IP地址等,并且需要该ARP包进行广播出去,所以以太网首部的目标MAC地址为FF-FF-FF-FF-FF-FF。LwIP先调用etharp_request()函数进行发送ARP请求包,在etharp_request()函数中会调用etharp_request_dst()函数进行发送,此时指定的目标MAC地址是e...原创 2019-03-29 11:31:18 · 1648 阅读 · 0 评论 -
LwIP的ARP协议实现(4)
ARP数据包处理以太网是有自己独立的寻址方式(MAC地址),而对于TCP/IP的上层协议(如TCP协议、IP协议),它们是以IP地址作为网络的标识,如果没有IP地址则无法进行收发数据。当数据通过网卡中接收回来的时候,LwIP内核就需要将数据进行分解,如果是IP数据报则递交给IP协议去处理,如果是ARP数据包则交由ARP协议去处理。真正让LwIP内核去处理接收到的数据包是ethernet_inp...原创 2019-03-29 11:32:35 · 1596 阅读 · 0 评论 -
LwIP的ARP协议实现(5)
ARP数据包发送我们知道一个数据包从底层传递进来的流程是怎么样的,如果是ARP数据包就会给ARP去处理,如果是IP数据报就使用ip4_input()函数传递到上层,这些处理在后面的章节讲解。那么如果上层协议想要发送数据,也肯定需要经过ARP协议将IP地址映射为MAC地址才能完成发送操作,IP数据报通过ip4_output()函数将上层数据包传递到ARP协议处理,关于IP协议是怎么样传递的我们暂且...原创 2019-03-29 11:33:22 · 2338 阅读 · 0 评论 -
物联网全栈开发教程计划启动
前言筹备了许久,这个计划终于启动了这是我跟师兄第一次推出这个计划,主要是为了面向更多的开发者,师兄主要使用ESP8266进行开发,而我使用以太网,他会以直播的方式进行与大家交流,我呢,就有空谢谢文章就好了物联网在现如今的生活中,绝大部分的人都听过物联网这个词,曾一度火热,很多大公司现在又推出AIoT这个概念,说明物联网又迈进一步(结合AI),反正我是觉得,如果有人想从事物联网方面的工作,还是...原创 2019-04-30 14:03:35 · 2729 阅读 · 0 评论 -
tcp协议笔记
TCP重传机制TCP要保证所有的数据包都可以到达,所以,必需要有重传机制。注意,接收端给发送端的Ack确认只会确认最后一个连续的包,比如,发送端发了1,2,3,4,5一共五份数据,接收端收到了1,2,于是回ack 3,然后收到了4(注意此时3没收到),此时的TCP会怎么办?我们要知道,**SeqNum和Ack是以字节数为单位,所以ack的时候,不能跳着确认,只能确认最大的连续收到的包,**不然...原创 2019-05-28 09:47:30 · 433 阅读 · 0 评论 -
LwIP中IP数据报的实现(1)——IP数据报分片
LwIP中IP数据报的实现IP数据报的数据结构IP数据报的数据结构为了描述IP数据报首部的信息,LwIP定义了一个ip_hdr的结构体作为描述IP数据报首部,同时还定义了很多获取IP数据报首部的宏定义与设置IP数据报首部的宏定义:/* The IPv4 header */struct ip_hdr { /* 版本 / 首部长度 */ PACK_STRUCT_FLD_8(u8_t _...原创 2019-08-01 08:54:06 · 2106 阅读 · 0 评论 -
LwIP的配置
说明:由于来源作者也是转载的,且未说明出处,本文真正作者未知,如有侵权,请联系杰杰删除SYS_LIGHTWEIGHT_PROT 平台锁,保护关键区域内缓存的分配与释放NO_SYS --- 是否带操作系统, =1时带,=0时,不带MEMCPY(dst,src,len) --- 内存拷贝 若你希望自己写拷贝函数则可替换SMEMCPY(dst,src,len) ---内存拷贝 若你希望自己写...转载 2019-01-23 10:02:57 · 12165 阅读 · 1 评论