getaddrbyhost的代理和重试

时间:2011-11-28 12:28:48

标签: python proxy

这个功能一直让我失望,我这样做了吗?还有另一种从IP地址获取域名的方法吗?

def ip_to_domain(ip):

        for i in range(0,4):
                try:
                        domain = socket.gethostbyaddr(str(ip))
                        return domain
                except IOError:
                        continue
                else:
                        break
        else:
                return False

感谢您提供任何建议。

1 个答案:

答案 0 :(得分:0)

您还需要陷阱socket.herror ...使用类似的内容并检查相关字段中是否显示无值...

import socket
def lookup(addr):
    """
    Example usage:
    name, alias, addresslist = lookup('4.2.2.2')
    """
    try:
        return socket.gethostbyaddr(addr)
    except socket.herror:
        return None, None, None

如果您想自动查找失败,请执行以下操作......

import socket
import time
def relookup(addr):
    """
    Example usage:
    name, alias, addresslist = relookup('4.2.2.2')
    """
    attempts = 1
    while (attempts <= 3):
        try:
            return socket.gethostbyaddr(addr)
        except IOError, socket.herror:
            time.sleep(5)
            attempts += 1

    return None, None, None