如何用C程序获取www.baidu.com的ip地址?---实际是请求dns server解析
2015-04-27 23:03
597 查看
怎样用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请求并保存应答信息):
web server ip is : 180.97.33.108
看到没, 其实我们啥也没做, gethostbyname会触发dns请求, 并把dns服务器返回的ip信息保存在pHost中。 当然啦, 如果你把网络关了, 那么pHost变为NULL. 好了, 本篇简单的文章就介绍到此。
当然啦, 你得配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 <stdio.h> #include <winsock2.h> #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. 好了, 本篇简单的文章就介绍到此。
相关文章推荐
- dns 解析错误 :bad address: www.baidu.com
- Linux如何配置IP和DNS才可以上网?以及ping: unknown host www.baidu.com
- c#程序如何从海康ipserver查询获取DVR设备ip地址
- DNS学习笔记--解析www.baidu.com域名过程
- 解决linux ping: unknown host www.baidu.com【linux使用静态IP遇到的问题;已经配置差不多了,一般是dns没有配好】
- js解析url参数如http://www.taobao.com/index.php?key0=21&key1=你哈&(获取key0和key1的值)
- php 关于如何获取域名或者IP地址的$_SERVER['']
- 如何获取浏览器的DNS解析时间
- ping www.baidu.com 不通 开启DNS
- Java利用Request请求如何获取IP地址对应的省份、城市详解
- 解决ubuntu server ping: unknown host www.baidu.com
- 如何生成微信小程序正方形二维码(不需请求接口获取)
- 如何调试 asp 程序 摘自: http://hi.baidu.com/artmis_/blog/item/dd859df57c317b7edcc474f0.html
- 采用CDN加速后,如何在程序里获取用户IP地址
- 零基础学小程序006(后台数据的获取与解析)----请求服务器json数据展现到小程序上
- 无法自动获取win7系统如何手动设置DNS和ip地址
- 复制网站内容 本程序将网站“www.baidu.com”首页的内容复制保存在文件test.html中。
- 服务端如何安全获取客户端请求IP地址
- 如何获取DNS Server的地址?---利用GetNetworkParams
- 通过HttpClient从指定server获取数据[转自:http://www.ligotop.com]