欢迎访问宙启技术站
智能推送

Python中的gethostbyaddr()函数实现IP地址解析

发布时间:2023-12-27 04:43:53

在Python中,gethostbyaddr()函数用于通过IP地址解析出主机名和别名。它使用的是DNS协议来查询IP地址的反向解析。

gethostbyaddr()函数的语法如下:

socket.gethostbyaddr(ip_address)

其中,ip_address为要解析的IP地址。

下面是一个使用gethostbyaddr()函数的例子:

import socket

ip_address = '8.8.8.8'
try:
    host_info = socket.gethostbyaddr(ip_address)
    hostname = host_info[0]
    aliases = host_info[1]
    ip_addresses = host_info[2]
    
    print(f'IP地址:{ip_address}')
    print(f'主机名:{hostname}')
    print(f'别名:{aliases}')
    print(f'IP地址列表:{ip_addresses}')
except socket.herror as e:
    print(f'解析IP地址失败:{e}')

在上面的例子中,我们使用socket.gethostbyaddr(ip_address)函数查询IP地址8.8.8.8的反向解析结果。如果解析成功,gethostbyaddr()函数的返回值是一个包含主机名、别名和IP地址列表的元组。我们可以通过索引来访问这些值,并将它们打印出来。

需要注意的是,在进行IP地址解析时,如果失败会引发socket.herror异常。所以我们使用了try-except语句来捕获异常并打印错误消息。

运行以上代码,将会输出类似以下的结果:

IP地址:8.8.8.8
主机名:dns.google
别名:[]
IP地址列表:['8.8.8.8']

如你所见,gethostbyaddr()函数成功地将IP地址8.8.8.8解析为dns.google的主机名。但是,它没有提供任何别名,并且返回的IP地址列表与查询时使用的IP地址相同。

这是gethostbyaddr()函数的基本用法。你可以尝试使用不同的IP地址来测试这个函数,并观察它的结果。