我这两天在利用fengzhang2002分享的程序代码例子学习lwIP,我现在遇到的问题是在例子代码中,主机的IP地址是网络系统分配的,而不是自己设置。我现在想如何修改程序,自己设置IP地址。
在例子中,
int netconn_bind(struct netconn *conn, struct ip_addr *addr, unsigned short port) 函数说明中,讲的是如果addr参数为NULL,那么IP由网络系统确定。
我进入函数内部,发现设置Ip地址不是自己想象的那么简单,在这里请教,如何能搞定这个? 拜谢 !!!
静态和动态。
静态就是自己写一个,就像给485写个地址差不多。
动态的就是DHCP,设定为动态的就行了,协议里的不要管了,只管用参数就行了。
回复 板凳 o0pingu0o 的帖子
多谢解答。我的意思就是使用静态的。但是我不知道具体该调用哪些个函数来指定,继续求教,谢谢!
1..lwIPInit(pucMACArray, 0, 0, 0, IPADDR_USE_DHCP); DHCP的
2..lwIPInit(pucMACArray, 0xC0A80164, 0xffffff00, 0xC0A80101, IPADDR_USE_STATIC); 静态的 MAC,IP,GATE,MASK,动/静
回复 5楼 o0pingu0o 的帖子
谢谢!
这个函数我尝试过,但会出现错误,错误提示的意思是在函数中IP,MASK等参数格式是无符号整形,而函数定义的这三个参数格式是struct ip_addr 的结构体。 而我未能在其他地方找到该结构体的定义。
还希望您还能给我多一些具体提示。十分感谢!
回复 7楼 zqzq501311 的帖子
lwIPInit函数的参数要求是无符号整形数阿!5楼整正解!只是MAC地址要求十一char数组存储,所以要将长整形的各个字节分开存储!
include\ipv4\lwip\ip_addr.h
PACK_STRUCT_BEGIN
struct ip_addr {
PACK_STRUCT_FIELD(u32_t addr);
} PACK_STRUCT_STRUCT;
PACK_STRUCT_END
如果设置一个 sturct ip_addr 变量的话,下面是一种方式,注意IP地址的分隔符是“逗号”
struct ip_addr;
IP4_ADDR(&ip_addr,192,168,0,33);
回复 9楼 warcraftiii 的帖子
十分感谢,我尝试一下!多谢各位了!