一、实现DHCP
1、定义#define LWIP_DHCP 1
2、调用dhcp_start(&enc28j60_netif); 启动DHCP
3、检测DHCP是否成功
4、在while中调用sys_check_timeouts();函数处理内核各种定时事件(1.4.1中才有这个函数,之前版本没有)
5、实验结果(确保路由具有DHCP功能)
二、DNS功能
1、定义#define LWIP_DNS 1
2、实现dns_gethostbyname函数
void my_found(const char *name, struct ip_addr *ipaddr, void *arg)
{
uint8_t ip[4];
ip[0] = ipaddr->addr>>24;
ip[1] = ipaddr->addr>>16;
ip[2] = ipaddr->addr>>8;
ip[3] = ipaddr->addr;
printf("\r\n%s域名解析的IP:%d.%d.%d.%d\n",name,ip[3], ip[2], ip[1], ip[0]);
}
void DNS_Test(void)
{
struct ip_addr DNS_IP;
char hostname[] = "www.baidu.com";
dns_gethostbyname(hostname,&DNS_IP,my_found,NULL);
}
3、调用DNS_Test
if(enc28j60_netif.dhcp->state == DHCP_BOUND)
{
printf("\r\nDHCP分配的IP:%d.%d.%d.%d",\
(enc28j60_netif.ip_addr.addr>> 0)&0xff,(enc28j60_netif.ip_addr.addr>> 8)&0xff,\
(enc28j60_netif.ip_addr.addr>> 16)&0xff,(enc28j60_netif.ip_addr.addr>> 24)&0xff);
DNS_Test();
}
只有在DHCP成功之后才运行DNS
4、结果
三、完整工程代码
http://download.csdn.net/download/chen244798611/10124995点击打开链接