网友jyx0928提出来有关lwip的dhcp的功能,今天上午写了一个简单的添加过程,我把代码贴出来。希望能给予你一定的帮助。由于公司网络的原因,未能进行dhcp功能的测试。如果代码有何问题,欢迎继续讨论。
struct ip_addr IpAddr, NetMask, Gateway;
static struct netif EMACNetif;
#if LWIP_DHCP
INT16U i,j;
INT8S result;
INT16U cnt;
for(i=0; i<5; i++) {
LWIP_DEBUGF(DHCP_DEBUG | DBG_TRACE | DBG_STATE, ("Start DHCP Request!!\r\n"));
result = dhcp_start(&EMACNetif);
IP4_ADDR(&IpAddr,0,0,0,0);
for(cnt=0; (cnt<10) && (IpAddr.addr == 0); cnt++) {
IpAddr.addr = EMACNetif.ip_addr.addr;
//for(j=0;j<100000;j++);
OSTimeDlyHMSM(0,0,1,0);
}
dhcp_stop(&EMACNetif);
if(IpAddr.addr != 0) {
LWIP_DEBUGF(DHCP_DEBUG | DBG_TRACE | DBG_STATE, ("Start DHCP Request *** OK *** \r\n"));
break;
}
}
IpAddr.addr = EMACNetif.ip_addr.addr;
Gateway.addr = EMACNetif.gw.addr;
NetMask.addr = EMACNetif.netmask.addr;
#endif
netif_add(&EMACNetif, &IpAddr, &NetMask, &Gateway, NULL, ethernetif_init, tcpip_input);
netif_set_default(&EMACNetif);
netif_set_up(&EMACNetif);