硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2438|回复: 1
收起左侧

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

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2017-6-29 10:29:08 | 显示全部楼层 |阅读模式
QQ截图20170629102628.png
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2022-2-8 11:16:01 | 显示全部楼层
硬汉 2022/1/13 20:42:32
方法一,阻塞的函数。
NET_ADDR addr;
char ip_ascii[40];

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[40];
  
  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;
  }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 21:58 , Processed in 0.159876 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表