Python网络编程攻略1.4 将IPv4地址转换成不同的格式_Python网络编程攻略1.4 将IPv4地址转换成不同的格式试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > web > Python网络编程攻略 > 1.4 将IPv4地址转换成不同的格式

Python网络编程攻略——1.4 将IPv4地址转换成不同的格式

如果要使用低层网络函数,有时普通的字符串形式的IP地址并不是很有用,需要把它们转换成打包后的32位二进制格式。 1.4.1 实战演练 Python的socket库提供了很多用来处理不同IP地址格式的函数,这里我们使用其中的两个:inet_aton()和inet_ntoa()。 我们来定义convert_ip4_address()函数,调用inet_aton()和inet_ntoa()转换IP地址。我们要使用两个示例IP地址:127.0.0.1和192.168.0.1。 代码清单1-3展示了如何定义convert_ip4_address()函数,如下所示: #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter – 1 # This program is optimized for Python 2.7. # It may run on any other version with/without modifications. import socket from binascii import hexlify def convert_ip4_address(): for ip_addr in ['127.0.0.1', '192.168.0.1']: packed_ip_addr = socket.inet_aton(ip_addr) unpacked_ip_addr = socket.inet_ntoa(packed_ip_addr) print "IP Address: %s => Packed: %s, Unpacked: %s" %(ip_addr, hexlify(packed_ip_addr), unpacked_ip_addr) if __name__ == '__main__': convert_ip4_address() 现在,运行这个攻略,会看到以下输出: $ python 1_3_ip4_address_conversion.py IP Address: 127.0.0.1 => Packed: 7f000001, Unpacked: 127.0.0.1 IP Address: 192.168.0.1 => Packed: c0a80001, Unpacked: 192.168.0.1 1.4.2 原理分析 在这个攻略中,使用for-in语句把两个字符串形式的IP地址转换成打包后的32位二进制格式,而且还调用了binascii模块中的hexlify函数,以十六进制形式表示二进制数据。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Python网络编程攻略》其他试读目录

• 1.1 简介
• 1.2 打印设备名和IPv4地址
• 1.3 获取远程设备的IP地址
• 1.4 将IPv4地址转换成不同的格式 [当前]
• 1.5 通过指定的端口和协议找到服务名
• 1.6 主机字节序和网络字节序之间相互转换
• 1.7 设定并获取默认的套接字超时时间
• 1.8 优雅地处理套接字错误
• 1.9 修改套接字发送和接收的缓冲区大小
• 1.10 把套接字改成阻塞或非阻塞模式
• 1.11 重用套接字地址
• 1.12 从网络时间服务器获取并打印当前时间
• 1.13 编写一个SNTP客户端
• 1.14 编写一个简单的回显客户端/服务器应用
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •