域名系统(DNS)是一个分布式的数据库,它主要用来把主机名转换成IP地址。DNS以及相关系统之所以存在,主要有以下两个原因:
(1).它们可以使人们比较容易地记住名字.
(2).它允许服务器改变IP地址,但是还用同样的名字.
1.使用getaddrinfo
getaddrinfo既支持IPv4又支持IPv6
1 #!/usr/bin/env python 2 3 import socket 4 5 socket.getaddrinfo("www.baidu.com",None)
返回值是一个元组
2.反向查询域名
1 #!/usr/bin/env python 2 3 import socket 4 5 host=socket.gethostbyaddr("116.214.12.74") 6 7 print host[0]
3.获取环境信息
为了得到完整的域名和IP地址,我们首先可以使用gethostname()获取主机名,接着使用getfqdn()获取完整信息,最后使用getaddrinfo()获取该域名对应的ip地址。
1 #!/usr/bin/env python 2 3 import socket 4 5 hostname= socket.gethostname() 6 7 f = socket.getfqdn(hostname) 8 9 addr = socket.getaddrinfo(f,None) 10 11 for i in addr: 12 print i[4]
这个例子中,IP地址不是非常有用,因为它只是回查的接口地址,大多数机器都有回路和至少一个配置的网络设备,您会得到IP地址和可能是二者其一。所以这个例子结果中最有用的信息是本地主机名。还要记住的是,很多系统是在私有网络上的,在公众的Internet上既得不到主机名,也得不到完整的名称。