Dns解析为ip

struct hostent FAR *PASCAL FAR gethostbyname(const char FAR * name);

其中,name指的是指向一个域名的指针,该函数返回的是一个hostent型的结构体。

struct hostent { char FAR * h_name; char FAR * FAR * h_aliases; short h_addrtype; short h_length; char FAR * FAR * h_addr_list; };

inet_ntoa函数将一个IP转换成一个互联网标准点分格式的字符串。

char FAR * inet_ntoa( struct in_addr in);
 
  
  
hostent->h_name指的是主机的规范名,例如www.google.com.hk的规范名其实是www-wide.l.google.com
hostent->h_aliases指的是主机的别名,例如www.google.com.hk就是google他自己的别名,有时候,有的主机有好几个别名,这些其实都是为了易于用户的记忆而为自己的网站多取的名字
hostent->h_addrtype指的是主机IP地址的类型,可能是IPV4(AF_INET)或者是IPV6(AF_INET6)
hostent->h_length指的是主机IP地址的长度,如果是IPV4,则是4
hostent->h_addr_list表示主机的IP地址,需要使用inet_ntoa转换成字符串格式的IP地址。IP地址可能有1——更多个。

 

 

char * smtpIp(char * url) {     HOSTENT * iphost;     char ipconfig[20];

    if((iphost = gethostbyname(url)) != NULL)     {         int i = 0;

        while(iphost->h_addr_list[i])         {             char ip[20];             memcpy(&ip, inet_ntoa(*((struct in_addr *)iphost->h_addr_list[i])), 20);             printf("%s", ip);

            memset(ip, '\0', 20);             i++;         }     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机(Microcontroller)是一种集了处理器、内存和各种输入输出接口的微型计算机系统。在某些特定的单片机应用场景中,确实可以进行DNS解析IP的操作。以下是关于如何在单片机上实现DNS解析IP的简要步骤。 首先,需要通过单片机的网络接口与DNS服务器进行通信。一般情况下,单片机会通过以太网或Wi-Fi模块连接到网络。 接下来,单片机需要实现网络协议栈,其中包括IP协议、UDP协议和DNS协议。这些协议可以通过相应的软件库或者自行编写代码来实现。 在进行DNS解析前,单片机首先通过DNS查询请求向DNS服务器发送询问。DNS查询请求中包含需要解析的主机名。单片机需要将主机名编码符合DNS协议要求的格式,并将查询请求发送给DNS服务器。 接着,单片机等待DNS服务器的响应。一般来说,DNS服务器会将解析得到的IP地址通过DNS响应消息回复给单片机。 最后,单片机接收DNS服务器的响应消息,并从中提取出解析得到的IP地址。单片机可以将该IP地址存储在内存中,或者直接进行后续的网络通信。 需要注意的是,实现这一过程需要相应的硬件和软件支持,并且单片机的资源可能有限。在解析复杂的DNS请求时,单片机可能需要处理较大的数据包和复杂的计算,这可能对单片机的性能和内存需求提出了一定的挑战。因此,在实际应用中,需根据单片机的性能和资源限制进行合理的选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值