人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python中實現(xiàn)ipaddress網(wǎng)絡(luò)地址的處理

發(fā)布日期:2022-03-16 13:50 | 文章來源:站長之家

ipaddress庫提供了處理IPv4與IPv6網(wǎng)絡(luò)地址的類。這些類支持驗證,查找網(wǎng)絡(luò)上的地址和主機,以及其他常見的操作。

本篇,將詳細(xì)介紹Python中ipaddress庫的使用規(guī)則。(內(nèi)容涉及很多計算機網(wǎng)絡(luò)知識,如果不懂,可以參考書籍《計算機網(wǎng)絡(luò)》)

地址

一般來說,我們使用ipaddress庫是通過ip_address()函數(shù)構(gòu)建一個地址對象。它會返回一個IPv4Address或IPv6Address實例。實例如下:

import ipaddress
import binascii
addresses = [
 '121.63.3.59',
 '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b'
]
for ip in addresses:
 address = ipaddress.ip_address(ip)
 print("IP地址:", address)
 print("IP Version:", address.version)
 print("是否是專用地址:", address.is_private)
 print("是否是公網(wǎng)地址:", address.is_global)
 print("是否是多播地址:", address.is_multicast)
 print("是否是環(huán)回地址:", address.is_loopback)
 print("是否是link-local保留:", address.is_link_local)
 print("判斷地址是否未指定:", address.is_unspecified)
 print("IP地址16進(jìn)制:", binascii.hexlify(address.packed))

運行之后,效果如下:

網(wǎng)絡(luò)

網(wǎng)絡(luò)地址通常用一個基本地址和一個掩碼表示,掩碼指示地址的哪些部分表示網(wǎng)絡(luò),哪些部分表示該網(wǎng)絡(luò)上的地址??梢燥@式的表示掩碼,也可以使用一個前綴長度值來表示,示例如下:

import ipaddress
addresses = [
 '192.168.1.0/24',
 '2001:0db8:3c4d:0015::/64'
]
for n in addresses:
 net = ipaddress.ip_network(n)
 print("是否是專用地址:", net.is_private)
 print("該網(wǎng)段的廣播地址:", net.broadcast_address)
 print("IP地址與子網(wǎng)掩碼:", net.compressed)
 print("掩碼以二進(jìn)制的格式展示:", net.with_netmask)
 print("以主機掩碼格式展示:", net.with_hostmask)
 print("網(wǎng)絡(luò)中的地址總數(shù):", net.num_addresses)
 print()

運行之后,效果如下:

涉及IP地址與子網(wǎng)掩碼以及廣播地址等知識,讀者可以參考《計算機網(wǎng)絡(luò)》。

打印網(wǎng)絡(luò)地址有多少IP可用

在IPv4的網(wǎng)絡(luò)地址中,我們一般將其分為A,B,C類,上面我們提供的192.168.1.0是一個C類地址。學(xué)過網(wǎng)絡(luò)的應(yīng)該一眼就可以看出來其主機地址有254個,基地址為192.168.1.0,而廣播地址為192.168.1.255。整體是256個。

因為這是C類地址,數(shù)學(xué)稍微好點的肯定手到擒來,但是我給你一個IPv6或者IPv4的A類地址,能口算出來多少的恐怕很少吧,而ipaddress庫可以直接遍歷打印,示例如下:

import ipaddress
n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
for ip in zip(net):
 print(ip)

運行之后,效果如下:

這里遍歷迭代,列出了所有的地址。如果只列出可用的主機地址把zip(net)改為zip(net.hosts())即可(也就是去除了廣播地址與基地址的其他地址)。

當(dāng)然,如果你只是想確定一個地址是否在網(wǎng)絡(luò)中,可以直接使用in進(jìn)行判斷。示例如下:

import ipaddress
n = '192.168.1.0/24'
net = ipaddress.ip_network(n)
ip=ipaddress.ip_address('192.168.1.233')
if ip in net:
 print("在里面")

接口

網(wǎng)絡(luò)接口表示網(wǎng)絡(luò)上的一個特定地址,可以表示為一個主機地址和一個網(wǎng)絡(luò)前綴或網(wǎng)絡(luò)掩碼。示例如下:

import ipaddress
addresses = [
 '192.168.1.251/24',
 '2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b/64'
]
for ip in addresses:
 iface = ipaddress.ip_interface(ip)
 print(iface)
 print("網(wǎng)絡(luò)地址:", iface.network)
 print("ip地址:", iface.ip)
 print("字符串表示形式:", iface.with_prefixlen)
 print("二進(jìn)制表示掩碼:", iface.with_netmask)
 print("主機掩碼表示:", iface.with_hostmask)

運行之后,效果如下:

到此這篇關(guān)于Python中實現(xiàn)ipaddress網(wǎng)絡(luò)地址的處理的文章就介紹到這了,更多相關(guān)Python ipaddress網(wǎng)絡(luò)地址 內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部