有时需要把设备的主机名转换成对应的IP地址,例如快速查询域名。本攻略介绍一个简单的函数来完成这一操作。 1.3.1 实战演练 如果想知道远程设备的IP地址,可以使用内置的库函数gethostbyname(),其参数是远程设备的主机名。 这里,我们要调用的是类函数gethostbyname()。让我们来看一下这个简短的代码片段。 代码清单1-2展示了如何获取远程设备的IP地址,如下所示: #!/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 def get_remote_machine_info(): remote_host = 'www.python.org' try: print "IP address: %s" %socket.gethostbyname(remote_host) except socket.error, err_msg: print "%s: %s" %(remote_host, err_msg) if __name__ == '__main__': get_remote_machine_info() 运行上述代码会得到以下输出: $ python 1_2_remote_machine_info.py IP address of www.python.org: 82.94.164.162 1.3.2 原理分析 这个攻略把gethostbyname()方法包装在用户定义的get_remote_machine_info()函数中,还引入了异常处理的概念。如上述代码所示,我们把主要的函数调用放在try-except块中,这就意味着,如果执行函数gethostbyname()的过程中发生了错误,这个错误将由try-except块处理。 假如我们修改remote_host参数的值,把www.python.org改成一个不存在的域名,例如www.pytgo.org,然后执行下述命令: $ python 1_2_remote_machine_info.py www.pytgo.org: [Errno -5] No address associated with hostname try-except块捕获了错误,并向用户显示了一个错误消息,说明域名www.pytgo.org没有对应的IP地址。
Python网络编程攻略——1.3 获取远程设备的IP地址
书名: Python网络编程攻略
作者: 萨卡尔
出版社: 人民邮电出版社
译者: 安道
出版年: 2014-12-1
页数: 170
定价: 45.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115372697