eric2013 发表于 2017-6-29 10:29:08

通过函数get_host_by_name实现DNS域名解析的过程,Full Debug状态的调试打印

armfly 发表于 2022-2-8 11:16:01

硬汉 2022/1/13 20:42:32
方法一,阻塞的函数。
NET_ADDR addr;
char ip_ascii;

if (netDNSc_GetHostByNameX ("www.arm.com", NET_ADDR_IP4, &addr) == netOK) {
// Success, 'addr' holds resolved IP address
netIP_ntoa (addr->addr_type, adr->addr, ip_ascii, sizeof(ip_ascii));
printf("IP Address: %s\n", ip_ascii);
}

硬汉 2022/1/13 20:42:58
方法二,非阻塞的,在回调函数完成。
static void dns_cbfunc (netDNSc_Event event, const NET_ADDR *addr);

if (netDNSc_GetHostByName ("www.arm.com", NET_ADDR_IP4, dns_cbfunc) == netOK) {
// Started, will complete on callback notification
}

static void dns_cbfunc (netDNSc_Event event, const NET_ADDR *addr) {
char ip_ascii;

switch (event) {
    case netDNSc_EventSuccess:
      // Host Address successfully resolved
      netIP_ntoa (addr->addr_type, adr->addr, ip_ascii, sizeof(ip_ascii));
      printf("IP Address: %s\n", ip_ascii);
      break;

    case netDNSc_EventNotResolved:
      // Error, host name does not exist in DNS record database
      break;

    case netDNSc_EventTimeout:
      // Error, DNS resolver timeout expired
      break;

    case netDNSc_EventError:
      // Error, DNS protocol error occurred
      break;
}
}

页: [1]
查看完整版本: 通过函数get_host_by_name实现DNS域名解析的过程,Full Debug状态的调试打印