LWIP 实现DHCP及DNS功能

一、实现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点击打开链接






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做了不一定能实现但不做一定不会实现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值