前言
bottle是python的一个微型web框架,目前正在学习一个使用bottle的开源项目源码。刚好接触到获取客户端机子的本机IP和主机名,特此记录一下。
项目地址:NebulaSolarDash
获取IP和HOST
使用socket模块获取IP和HOST,其实很简单:
方法一
#!/usr/bin/env python
import socket
# 获取主机名HOST
host = socket.gethostname()
# 获取本机IP
# 这里输出的ip实际上是一个元组,你可以输出看一下,而且其中ip地址字段输出为列表
ip = socket.gethostbyname_ex(host)
print host
print ip
print "[%s] <==> [%s]" % (host, ip[2][0])
输出结果:
yt1
('yt1.localdomain', [], ['192.168.231.200'])
[yt1] <==> [192.168.231.200]
不足
上述测试在虚拟机上进行的,会发现:
1、IP获取语句执行缓慢,不过后来在服务器上测试发现却很快。
2、在测试中ip获取结果基本上与上处输出结果相似,只有三个元素,第三个为ip地址;在实际服务器上发现依然只有一个ip输出,即使你配置多个ip存在。
方法二
该方法还是在该项目中看到的,供大家参考:
#!/usr/bin/env python
import socket
csock =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
csock.connect(('8.8.8.8',80))
(addr,port)=csock.getsockname()
csock.close()
print addr
输出结果:
192.168.231.200 38964