python的socket里 gethostbyname 与 gethostbyname_ex 的区别

           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的加强版。

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Rex7/p/4752575.html