gethostbyname
# -*- coding: utf-8 -*-
import socket
ip = socket.gethostbyname("www.baidu.com")
print(ip)
# 39.156.66.14
getaddrinfo
文档
函数签名
socket.getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
返回数据格式5元组
(family, type, proto, canonname, sockaddr)
示例1
# -*- coding: utf-8 -*-
import socket
address_info = socket.getaddrinfo("www.baidu.com", None)
ip = address_info[0][-1][0]
print(ip)
# 39.156.66.14
示例2
import socket
ret = socket.getaddrinfo("www.baidu.com", port=443)
for item in ret:
print(item)
返回数据
(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('220.181.38.149', 443))
(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('220.181.38.149', 443))
(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('220.181.38.150', 443))
(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('220.181.38.150', 443))
参数说明
AF_INET = 2 # IPv4
AF_INET6 = 30 # IPv6
SOCK_STREAM = 1
SOCK_DGRAM = 2
IPPROTO_TCP = 6
IPPROTO_UDP = 17
需要注意的是:Python2版本中,不支持关键字参数,仅支持位置参数