博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用C程序获取www.baidu.com的ip地址?---实际是请求dns server解析
阅读量:4142 次
发布时间:2019-05-25

本文共 1601 字,大约阅读时间需要 5 分钟。

       怎样用C程序获取www.baidu.com的ip地址呢? 实际上, 这个问题我们之前间接讨论过, 今天我们继续来说一下。

 

       当然啦, 你得配dns地址, 也就是要指定dns服务器, 否则, 怎么能解析www.baidu.com呢?  当然了, 你可以直接ping www.baidu.com获取, 结果如下:

C:\Documents and Settings\Administrator>ping www.baidu.com

Pinging www.a.shifen.com [180.97.33.107] with 32 bytes of data:
Reply from 180.97.33.107: bytes=32 time=41ms TTL=53
Reply from 180.97.33.107: bytes=32 time=28ms TTL=53
Reply from 180.97.33.107: bytes=32 time=32ms TTL=52
Reply from 180.97.33.107: bytes=32 time=31ms TTL=52
Ping statistics for 180.97.33.107:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 41ms, Average = 33ms

 

      当然啦, 你也可以用nslookup www.baidu.com, 结果如下:

C:\Documents and Settings\Administrator>nslookup www.baidu.com

Server:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6
Non-authoritative answer:
Name:    www.a.shifen.com
Addresses:  180.97.33.108, 180.97.33.107
Aliases:  www.baidu.com

 

 

       那要用代码, 该怎么搞呢? 直接上码(其实无非就是gethostbyname触发dns请求并保存应答信息):

 

#include 
#include
#pragma comment(lib, "ws2_32.lib")int main(){ // 网络初始化 WSADATA wsaData; WSAStartup(MAKEWORD(1,1), &wsaData); // 度娘来了 char szWeb[] = "www.baidu.com"; HOSTENT *pHost = gethostbyname(szWeb); // 打印度娘的ip地址(实际上, 这个地址经常变动, 所以如果你得到的地址不一致, 那也是正常的) if(NULL != pHost) { const char* pIPAddr = inet_ntoa(*((struct in_addr *)pHost->h_addr)) ; printf("web server ip is : %s\n", pIPAddr); } return 0;}

        当网络是好的, 且dns配置正确, 那么结果为:

 

web server ip is : 180.97.33.108

 

        看到没, 其实我们啥也没做, gethostbyname会触发dns请求, 并把dns服务器返回的ip信息保存在pHost中。 当然啦, 如果你把网络关了, 那么pHost变为NULL.  好了, 本篇简单的文章就介绍到此。

 

      

 

 

 

 

 

转载地址:http://fygvi.baihongyu.com/

你可能感兴趣的文章
shiro权限管理基本原理和实现的整理
查看>>
阿里巴巴开发手册笔记-----数据库篇
查看>>
JUC组件拓展
查看>>
多线程并发最佳实践
查看>>
Mysql体系架构以及执行过程
查看>>
mybatis简介及框架设计
查看>>
mybatis的原理
查看>>
mybatis入门及配置解析
查看>>
mybatis缓存以及插件开发
查看>>
redis数据类型以应用场景
查看>>
redis原理篇以及性能优化
查看>>
redis集群
查看>>
java基础语法(一)
查看>>
java基础语法(二)
查看>>
Java面向对象
查看>>
String常用方法API
查看>>
Java常用工具类API(Arrays类,Collections类,包装类,日期类,Math类,Systeml类)
查看>>
java异常体系
查看>>
JQuery选择器总结
查看>>
Java集合体系
查看>>