lwip 2.0.3 DNS 域名解析 使用

1、  在  lwipopts.h 中  

  #define LWIP_DNS 1             /* 使能 DNS 服务器的功能 ,2018年1月8日21:16:20,suozhang */
  #define LWIP_RAND() ((u32_t)rand())     /* 使用 DNS 服务器的功能,需要添加随机数函数 ,2018年1月8日21:16:20,suozhang */

2、在 初始化  服务中 ,进行初始化  DNS 的 服务器 IP 以及 初始化 DNS 服务

  

ip_addr_t dnsserver;

/* Create tcp_ip stack thread */

tcpip_init( NULL, NULL );    /* 创建,运行 LWIP 协议栈,2018年1月9日10:56:34 */

IP4_ADDR(&dnsserver,114,114,114,114);/* suozhang,add,2018年1月11日18:03:10 */
dns_setserver(0, &dnsserver);

IP4_ADDR(&dnsserver,223,5,5,5);    /* suozhang,add,2018年1月11日18:03:10 */
dns_setserver(1, &dnsserver);

dns_init(); /* 初始化 DNS 服务,2018年1月9日10:56:34 */

3、 在保证 能正常 联网的情况 下, 使用 下面的方式进行 域名解析服务

void my_found(const char *name, const ip_addr_t *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("%s ip is :%d.%d.%d.%d.
",name,ip[3], ip[2], ip[1], ip[0]); 
}

void test()
{
    

    
    char hostname[]="www.baidu.com";
    
    err_t err;
    
    err  = dns_gethostbyname((char*)(hostname), &(serverIp),my_found,NULL);

    if( err == ERR_OK)
        {
            printf("netconn_gethostbyname ERR_OK.
");
        }
        else
        {
            printf("netconn_gethostbyname err:%d.
",err);
        }

}

5、  解析 结果 

  netconn_gethostbyname err:-5.

  www.baidu.com ip is :111.13.100.91.

 

6、-5 意思 是正在解析中…………

原文地址:https://www.cnblogs.com/suozhang/p/8270256.html