2011-01-07 71 views

回答

3

您可以使用socket.getaddrinfo。这将为您提供与该名称关联的不同IP地址,并且还可以为您提供IPv6地址。

从文档:

>>> import socket 
>>> help(socket.getaddrinfo) 
Help on built-in function getaddrinfo in module _socket: 

getaddrinfo(...) 
    getaddrinfo(host, port [, family, socktype, proto, flags]) 
     -> list of (family, socktype, proto, canonname, sockaddr) 

    Resolve host and port into addrinfo struct. 
>>> from pprint import pprint 
>>> pprint(socket.getaddrinfo('www.google.com', 80)) 
[(2, 1, 6, '', ('74.125.230.83', 80)), 
(2, 2, 17, '', ('74.125.230.83', 80)), 
(2, 3, 0, '', ('74.125.230.83', 80)), 
(2, 1, 6, '', ('74.125.230.80', 80)), 
(2, 2, 17, '', ('74.125.230.80', 80)), 
(2, 3, 0, '', ('74.125.230.80', 80)), 
(2, 1, 6, '', ('74.125.230.81', 80)), 
(2, 2, 17, '', ('74.125.230.81', 80)), 
(2, 3, 0, '', ('74.125.230.81', 80)), 
(2, 1, 6, '', ('74.125.230.84', 80)), 
(2, 2, 17, '', ('74.125.230.84', 80)), 
(2, 3, 0, '', ('74.125.230.84', 80)), 
(2, 1, 6, '', ('74.125.230.82', 80)), 
(2, 2, 17, '', ('74.125.230.82', 80)), 
(2, 3, 0, '', ('74.125.230.82', 80))] 

注:gethostbyname是用C弃用(和Python socket.gethostbyname用它来实现),因为它不支持IPv6地址,getaddrinfo为推荐的替代。