#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")
IPv6技術 什麼是IPv6
ipv6技術 1 引言 ipv4位址即將耗盡,因此需要移轉至ipv6的討論,過去數年來一直不曾中斷。ipv4和ipv6在報文結構 報文字段意義以及位址配置諸多方面都有顯著的不同,這給從ipv4到ipv6過渡時期internet的運作帶來了極大的困難。當前接入網技術上幾乎所有的應用都是構建在ipv4上...
busybox ftpd關於ipv6的測試
在測試最新busybox ftpd的ipv6支援情況時,客戶端用filezillaclient登入ftpd。在輸入主機ip時,直接輸入ipv6位址,filezilla好像解析不了這個位址,後來發現在輸入ipv6位址時,需要加上 例如 2001 470 1f01 f52b 5 filezilla終於解...
IPv6知識概述 IPv6位址
首選格式 x x x x x x x x x表示乙個4位十六進製制數 典型的例子如下所示 2000 0000 0000 0000 0001 2345 6789 abcd ipv6位址每段中的前導0是可以去掉的,但是至少要保證每一段有乙個數字。將不必要的前導0去掉後,上述位址可以表示為 2000 0 ...