zoukankan      html  css  js  c++  java
  • python网络编程【四】(域名系统)

      域名系统(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上既得不到主机名,也得不到完整的名称。

  • 相关阅读:
    Cpp -- static变量不属于类的实例
    单例模式
    WebView android
    网络编程之一
    初涉json
    初涉XML
    关于JSON的GSON
    网络编程(一)
    硬件51
    重拾C之数据
  • 原文地址:https://www.cnblogs.com/vipitsoft/p/5647433.html
Copyright © 2011-2022 走看看