您的位置:首页 > 编程语言 > Python开发

python的socket里 gethostbyname 与 gethostbyname_ex 的区别

2014-06-24 12:52 134 查看
python里有一个模块,叫socket,提供了BSD
socket 的通信接口,在看了这个模块之后,我发现了两个很相似的函数------gethostbynamegethostbyname_ex 。看起来很像吧,是不是让你想起了
win32 api 和 mfc 。

他们的区别是什么呢,看图:



gethostbyname 返回的是 主机名 的IPv4 的地址格式,如果传入的参数是IPv4 的地址格式,则返回值跟参数一样,这个函数不支持IPv6 的域名解析。

gethostbyname_ex 则是扩展后的接口,传入主机名,它能够返回 一个三元组 (原始主机名,域名列表,IP地址列表),这个函数同样不支持IPv6的域名解析。我们来看一下他们到底是怎么样使用的。



gethostbyname_ex 返回的信息 比 gethostbyname 多吧,gethostbyname 只能得到 IP 地址,而 gethostbyname_ex 能得到 百度原先的 域名,和 域名列表,以及地址列表,看到这两个IPv4 的地址没,他们是同一个网段的。我们来ping 一下百度,看一下结果正确不。





从图可以看出 ,“115.239.211.110 ” 就是 www.a.shifen.com
的IP地址,而“115.239.210.27” 就是 www.baidu.com 的IP 地址,他们都是百度的。看得出,gethostbyname_ex 比较强大,它可是gethostbyname的加强版。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: