파이썬은 IPv6 또는 IPv4 인터넷인지 판단합니다
ipv4 및 IPv6 주소 변환 방법 python 솔루션
ipv4 및 IPv6 주소 변환 방법 python 솔루션. Ipv4 및 IPv6 주소 변환 문제를 이해하려면 먼저 그 개념을 이해해야 합니다.
IPv4 및 IPv6 주소가 무엇인지 간단히 말해
ipv4: 인터넷 프로토콜 제 4 판이자 현재 인터넷 기술의 초석을 구성하는 최초의 프로토콜입니다.
IPv6: 인터넷 엔지니어링 태스크 포스가 현재 버전의 IPv4 를 대체하도록 설계된 차세대 IP 프로토콜입니다.
현재 IP 프로토콜의 버전 번호는 IPv4 이고 다음 버전은 IPv6 입니다.
ipv4 및 IPv6 주소 변환 방법에 대한 파이썬 솔루션, 소스 코드는 다음과 같습니다. (twisted.python.compat 및 struct 및 python socket 메서드 필요)
# twisted.python.compat 가져오기# IPv4 디지털 주소
defipv4 _ to _ string (IPv4 Ipv4 _ n)
IPv4 _ string = socket.inet _ ntop (socket.af _ inet, 데이터)
return IPv4 _ string
def IPv4 _ from _ string (IPv4 _ string) Ipv4 _ string)
IPv4 _ n = struct.unpack ('I' , Data)
IPv4 = socket.ntohl (IPv4 _ n [0])
return IPv4
P >def IPv4 _ int2 readable (IPv4):
return str (IPv4)
# iip 별도의 문자열) 는
defipv6 _ to _ string (IPv6):
IPv6 _ n = (소켓 ..
socket.htonl (IPv6 [3])
data = struct.pack ('iiii',) Ipv6 _ n [3])
IPv6 _ string = socket.inet _ ntop (socket.af _ inet6, 데이터)
returnipv6 _ string
defipv6 _ from _ string (IPv6 _ string) Ipv6 _ string)
IPv6 _ n = struct.unpack ('iiii', data)
IP
socket.ntohl(ipv6_n[2]),
socket.ntohl (IPv6 _ n [
Str(ipv6[0])+','+str(ipv6[1])+','+str(ipv6[2])+','+str )
#win32 에서 inet_pton 및 inet _ ntop
def inet _ ntop (family, Ipstr):
if family = = socket.af _ inet:
return socket.inet _; P >
V6 addr =':'. join ('02x02x' (ord (I), ord (j))
foin Ipstr [1:: 2])
return V6 addr
# www.iplaypy.com
Addr):if family = = socket.af _ inet:
return socket.inet _ ad P >
v4 addr = addr [addr.rindex (':')+1:]
v4 addr = socket.inet V4addr)
v4addr.insert(2,':')
newaddr = addr [:addr; Newaddr)
dbyts = [0] * 8 # 8groups
grps = addr.split (':' 16)
else:
for j, w in enumerate (grps [::-1]):
16)else:
break
break
return'' )