网络工具 - NetUtil / Ipv4Util¶
由来¶
网络编程中经常需要判断 IP 地址、端口、内网/外网等。NetUtil 提供了常用的网络工具方法。
NetUtil¶
IP 地址¶
from hutool import NetUtil
NetUtil.get_local_ip() # "192.168.1.100"(本机 IP)
NetUtil.get_localhost() # "127.0.0.1"
NetUtil.get_mac_address() # "AA:BB:CC:DD:EE:FF"
# 判断内网 IP
NetUtil.is_inner("192.168.1.1") # True
NetUtil.is_inner("10.0.0.1") # True
NetUtil.is_inner("8.8.8.8") # False
端口¶
NetUtil.is_valid_port(8080) # True
NetUtil.is_valid_port(0) # False
NetUtil.is_usable_port(8080) # True(端口是否可用)
NetUtil.get_usable_port() # 获取一个可用端口
IP 转换¶
# IPv4 与长整型互转
NetUtil.ipv4_to_long("192.168.1.1") # 3232235777
NetUtil.long_to_ipv4(3232235777) # "192.168.1.1"
连通性¶
NetUtil.ping("baidu.com") # True/False
NetUtil.is_open("baidu.com", 80) # True(端口是否开放)
新增方法¶
# 判断内网 IP(别名)
NetUtil.is_inner_ip("192.168.1.1") # True
NetUtil.is_inner_ip("8.8.8.8") # False
# IP 是否在 CIDR 范围内
NetUtil.is_in_range("192.168.1.100", "192.168.1.0/24") # True
NetUtil.is_in_range("10.0.0.1", "192.168.1.0/24") # False
# 遮蔽 IP 地址
NetUtil.hide_ip_part("192.168.1.100") # "192.168.1.*"
# 获取本机 IPv4 列表
NetUtil.local_ipv4s() # ["192.168.1.100", ...]
# 获取本机主机名
NetUtil.get_local_host_name() # "my-computer"
# 解析主机名
NetUtil.get_ip_by_host("localhost") # "127.0.0.1"
# 补全相对 URL
NetUtil.to_absolute_url("http://example.com/a/b", "../c")
# "http://example.com/c"
Ipv4Util¶
IPv4 地址的高级操作:
from hutool import Ipv4Util, MaskBit
# 掩码操作
MaskBit.get_mask(24) # "255.255.255.0"
MaskBit.get_mask_bit("255.255.255.0") # 24
主机信息¶
from hutool import NetUtil
# 获取本机主机名(与 get_localhost 相同)
NetUtil.get_host_name() # "DESKTOP-ABC123"
# 获取本机 IP 地址(通过 UDP 探测)
NetUtil.get_host_address() # "192.168.1.100"