LWIP 问题:DHCP


关于DCHP 的问题首先要明确:

DHCP获取到的IP是有时效的,当超过这个时间之后,DHCP SERVER 就认为这个IP已经不属于你,你需要重新获取,重新获取就需要使用DHCP 程序,这样DHCP 的任务存在于整个周期中。

网上也看到了很多lwip DHCP的使用流程,但都不全正确。

存在问题:

1. 很明显的是他们都调用了 DHCP_Stop 函数,这就阻止了 IP 地址的续约。

2.  获取到 IP 之后,如果你不想用这个 IP ,你可以release掉。如果不release,那么这个 IP 其实已经绑定了在 网卡上了。

首先:DHCP_start 启动DHCP任务,开始向网络中发送广播包。

在DHCP_Recv函数中可以看到 已经调用 dhcp_bind 函数,但是绑定并不是在这里进行的而是在DHCP_timeout中


如果你设置的IP时间足够长,那么你可以关闭DHCP。

也就是 DHCP_start  之后,就可以了。 

代码如下:

[code=cpp]

  netif_add(&EMACNetif, &IpAddr, &NetMask,&Gateway, NULL, ethernetif_init, tcpip_input); 
  netif_set_default(&EMACNetif);
  netif_set_up(&EMACNetif);

#if LWIP_DHCP
 dhcp_start(&EMACNetif);

#endif



[/code]

你可能感兴趣的:(LWIP 问题:DHCP)