第11章:网络通信
网络通信用于获取一个算法在本地运行所需的数据,还可以共享信息实现分布式处理,另外可以用来管理云服务。Python的标准库提供了一些模块来创建网络服务以及远程访问现有服务。
11.1 ipaddress:Internet地址
ipaddress模块提供了处理IPv4和IPv6网络地址的类。这些类支持验证,查找网络上的地址和主机,以及其他常见操作。
11.1.1 地址
最基本的对象表示网络地址本身。可以向ip_address()传入一个字符串、整数或字节序列来构造一个地址。返回值是一个IPv4Address或IPv6Address实例,这取决于使用什么类型的地址。
import binascii
import ipaddress
ADDRESSES = [
'10.9.0.6',
'fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa',
]
for ip in ADDRESSES:
addr = ipaddress.ip_address(ip)
print('{!r}'.format(addr))
print(' IP version:',addr.version)
print(' is private:',addr.is_private)
print(' packed form:',binascii.hexlify(addr.packed))
print(' integer:',int(addr))
print()
这两个类可以提供地址的不同表示以满足不同的用途,还可以回答一些基本断言,如这个地址是否为组播通信保留,或者它是否在一个专用网(private network)中。
运行结果: