Python:通过socket.gethostbyname/socket.getaddrinfo获取域名的ip地址

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版本中,不支持关键字参数,仅支持位置参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值