GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>系统教程 > OpenHarmony设备开发(七)- LWIP-rtthread lwip

OpenHarmony设备开发(七)- LWIP-rtthread lwip

来源:Ghost系统之家浏览:时间:2023-07-21 08:24:12

OpenHarmony设备开发(七)- LWIP

作者:X丶昕雪 2022-10-24 14:54:29系统 OpenHarmony OpenHarmony轻量化系统连接WIFI便多数都为LWIP协议,本文便主要介绍轻量化系统连接WIFI的分配IP步骤。

​​想了解更多关于开源的内容,请访问:​​

​​51CTO开源基础软件社区​​

​​https://ost.51cto.com​​

前言

LWIP全称为LIght Weight IP,本意便是轻量化的小型TCP协议,旨在保留TCP的功能下尽量减少对系统资源的占用,LWIP多用于轻量化的设备上.当然LWIP功能不只是支持TCP协议传输,还支持了DHCP协议动态分配IP地址,IP协议等等。

OpenHarmony轻量化系统连接WIFI便多数都为LWIP协议,本文便主要介绍轻量化系统连接WIFI的分配IP步骤。

对于小熊派nano而言,lwip的主要头文件都保存在了该地址下:

​​//vendor/hisi/hi3861/hi3861/third_party/lwip_sack/include/lwip​​

netif网络接口

首先我们要认识到netif结构体,该结构体是LWIP从硬件中抽象出来的网卡(网络接口),并且该结构体还是个链表结构,即支持多个网卡配置.我们使用LWIP进行配置IP时,netif结构体必不可少。

netif结构体的定义存放在:

vendor/hisi/hi3861/hi3861/third_party/lwip_sack/include/lwip/netif.h​​

介绍一些主要的变量:

struct netif *next;该变量便表示了netif是链表结构,提供了配置多个网卡的接口,当需要配置第二个网络接口时,便指向该指针便可配置第二网络接口,第三第四如上原理。

#打卡不停更#【FFH】OpenHarmony设备开发(七)- LWIP-开源基础软件社区

本文主要介绍ipv4的相关变量(因为ipv4用的比较多)。

这三个数据分别存放了主机的IP,子网掩码,网关.(但经过查看此数据,好像小熊派nano的IP地址和子网掩码反了(有可能存放相关地址的时候传递的变量反了?)。

#打卡不停更#【FFH】OpenHarmony设备开发(七)- LWIP-开源基础软件社区

进一步查看IP,子网掩码,网关的ip_addr_t结构体,我们便能从里面看到了存放了ip4和ip6的地址,其中ip4变量是以无符号整数类型保存,ip4_addr_t结构体里面只有一个unsigned int的addr变量。

我们想获取IP,子网掩码,网关的数据方法如下:

static struct netif *g_lwip_netif = NULL;//创建该结构体g_lwip_netif->ip_addr.u_addr.ip4.addrg_lwip_netif->netmask.u_addr.ip4.addrg_lwip_netif->gw.u_addr.ip4.addr

**char hostname[NETIF_HOSTNAME_MAX_LEN];**netif主机名称。

**u8_t hwaddr[NETIF_MAX_HWADDR_LEN];**该设备MAC地址。

DHCP动态分配IP

DHCP全称为Dynamic Host Configuration Protocol,动态主机配置协议.顾名思义,其作用便是可以动态分配IP地址,提高IP地址的使用效率。

主要介绍小熊派nano的实现:

创建netif结构体,并对此初始化。启动dhcp。static struct netif *g_lwip_netif = NULL;//创建该结构体 g_lwip_netif = netifapi_netif_find("wlan1");if (g_lwip_netif)//判断dhcp是否初始化成功{dhcp_start(g_lwip_netif); //启动DHCPprintf("begain to dhcp");}

一些相关的API接口:

err_t dhcp_is_bound(struct netif *netif);​获取网络接口的DHCP协商状态,可以使用该api循环判断dhcp是否正常使用,判断成功再进行下一步工作.返回值为0即是成功。err_t netifapi_netif_common(struct netif *netif, netifapi_void_fn voidfunc,netifapi_errt_fn errtfunc);​打印主机以及设备的IP等相关信息,debug以及了解相关信息.样例:netifapi_netif_common(g_lwip_netif, dhcp_clients_info_show, NULL)。err_t netifapi_netif_get_addr(struct netif *netif, ip4_addr_t *ipaddr, ip4_addr_t *netmask, ip4_addr_t *gw);获取netif内保存的设备的IP,子网掩码,网关信息,将ip保存到ipaddr,子网掩码保存到netmask,网关保存到gw。struct netif *netifapi_netif_find(const char *name);寻找一个名为name的网络接口,并将此网络接口作为返回值返回。err_t netifapi_dhcps_start(struct netif *netif, char *start_ip, u16_t ip_num);​启动DHCP服务端,提供客户端连接,常用于设备作为热点时所选择的DHCP启动方式。参数一:网络接口参数二:起始IP地址参数三:IP地址数量其中如果DHCPv4使用默认配置,参数二和三都需要为NULL。netifapi_dhcps_start(g_lwip_netif, 0, 0);更多的api接口可以参考netifapi.h和dhcp.h。存放地址:device/soc/hisilicon/hi3861v100/sdk_liteos/third_party/lwip_sack/include/lwip。

静态分配IP

关键API接口为:err_t netifapi_netif_set_addr(struct netif *netif,const ip4_addr_t *ipaddr,const ip4_addr_t *netmask,const ip4_addr_t *gw)。

前文中有了一个获取IP信息,这便有一个设置IP地址,我们可以通过这一个API便完成了对IP地址的分配,十分的便捷!

创建netif结构体,并对此初始化。设置IP,子网掩码,网关。调用API完成分配IP。static struct netif *g_lwip_netif = NULL;//创建该结构体g_lwip_netif = netifapi_netif_find("wlan1");ip4_addr_t bp_gw;ip4_addr_t bp_ipaddr;ip4_addr_t bp_netmask;IP4_ADDR(&bp_ipaddr, 192, 168, 1, 110);IP4_ADDR(&bp_gw, 192, 168, 1, 1);IP4_ADDR(&bp_netmask, 255, 255, 255, 0); netifapi_netif_set_addr(g_lwip_netif, &bp_ipaddr, &bp_netmask, &bp_gw);

ip地址打印

直接打印IPv4地址。ip4_addr_t Ipv4_Addr;unsigned char *read = (unsigned char *)&Ipv4_Addr.addr;for (int i = 0; i < 4; i++){printf("%d", *(read + i));if (i != 3)printf(".");elseprintf("\n");}IPv4十进制转字符串。ip4_addr_t Ipv4_Addr;const unsigned int num=Ipv4_Addr.addr;char strTemp[20];//存放IPV4地址sprintf(strTemp, "%d.%d.%d.%d",(num & 0x000000ff),(num & 0x0000ff00) >> 8,(num & 0x00ff0000) >> 16,(num & 0xff000000) >>24);

​​想了解更多关于开源的内容,请访问:​​

​​51CTO开源基础软件社区​​

​​https://ost.51cto.com​​。

责任编辑:jianghua 来源:51CTO开源基础软件社区 LWIP协议鸿蒙

推荐系统

  • 电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    语言:中文版系统大小:2.98GB系统类型:Win8

    电脑公司Ghost Win8.1x32位纯净版V2022年7月版本集成了自2022流行的各种硬件驱动,首次进入系统即全部硬件已安装完毕。电脑公司Ghost Win8.1x32位纯净版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,精心挑选的系统维护工具,加上绿茶独有

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户