测试ipv6情况

#coding=utf8


#ipv4环境下:
#getaddrinfo from: ipv6-test.com
#[(2, 2, 17, '', ('5.135.165.173', 0)), (2, 1, 6, '', ('5.135.165.173', 0)), (30, 2, 17, '', ('2001:41d0:8:e8ad::1', 0, 0, 0)), (30, 1, 6, '', ('2001:41d0:8:e8ad::1', 0, 0, 0))]
#INET,5.135.165.173
#INET6,2001:41d0:8:e8ad::1


#ipv6环境下
#getaddrinfo from: ipv6-test.com
#[(30, 2, 17, '', ('64:ff9b::587:a5ad', 0, 0, 0)), (30, 1, 6, '', ('64:ff9b::587:a5ad', 0, 0, 0)), (2, 2, 17, '', ('5.135.165.173', 0)), (2, 1, 6, '', ('5.135.165.173', 0))]
#INET6,64:ff9b::587:a5ad
#INET,5.135.165.173


#测试时发现只要环境是ipv6,测试总会返回两个地址,如果是ipv4则大部分只返回ipv4地址,除了特别配置了ipv6的服务会返回ipv6地址




import sys, socket


strHost = "ipv6-test.com"


print("getaddrinfo from: " + strHost)
result = socket.getaddrinfo(strHost, None)
print(result)
for r in result:
    if r[2] != socket.IPPROTO_TCP:
        continue
    if r[0] == socket.AF_INET:
        print("INET," + r[4][0])
    elif r[0] == socket.AF_INET6:
        print("INET6," + r[4][0])


#测试中看起来ipv4则第一个地址是ipv4地址,ipv6环境则第一个地址是ipv6地址,不论是否服务端真正支持ipv6
bEnvIPv6 = False
if len(result) > 0:
    if result[0][0] == socket.AF_INET6:
        bEnvIPv6 = True
if bEnvIPv6:
    print("IPv6 env.\n")
else:
    print("IPv4 env.\n")





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值