LwIP IP 层常用函数和宏
Posted 研究是为了理解
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LwIP IP 层常用函数和宏相关的知识,希望对你有一定的参考价值。
1.将 4 字节数据组成 IP 地址
头文件:ip_addr.h
IP_ADDR4(ipaddr,a,b,c,d)
实现方法:
IP_ADDR4(ipaddr, a,b,c,d) (ipaddr)->addr = PP_HTONL(LWIP_MAKEU32(a,b,c,d))
可以看出已经转换为网络字节序(H:主机字节序,N:网络字节序)
比如默认 IP 地址为 172.18.1.2,使用宏定义为:
/*默认网络参数*/
#define IP_ADDER0 172
#define IP_ADDER1 18
#define IP_ADDER2 1
#define IP_ADDER3 2
则转化为 lwIP IP 地址代码为:
ip_addr_t ipaddr;
IP4_ADDR(&ipaddr, IP_ADDER0, IP_ADDER1, IP_ADDER2, IP_ADDER3)
2.将字符串形式的 IP 地址转化为 32 位网络字节序整数
头文件:ip_addr.h
ipaddr_aton(cp, addr)
这是一个宏,展开相当于:
ip4addr_aton(const char *cp, ip4_addr_t *addr)
这个函数与 Socket 编程中的 inet_aton类似。成功时返回1,失败返回0
- cp:需要转换的字符串形式 IP 地址(比如“172.18.1.2”)
- addr:指向保存 lwIP IP 地址信息的结构体变量地址。
3.字节序转换
头文件:def.h
htons(x) //主机字节序转网络字节序,16位
ntohs(x) //网络字节序转主机字节序,16位
htonl(x) //主机字节序转网络字节序,32位
ntohl(x) //网络字节序转主机字节序,32位
以上是关于LwIP IP 层常用函数和宏的主要内容,如果未能解决你的问题,请参考以下文章
TCP/IP传输层协议实现 - TCP报文接收/发送(lwip)
TCP/IP传输层协议实现 - TCP的坚持定时器(lwip)