bottle学习之使用socket获取本机IP和主机名

本文介绍两种使用Python获取客户端计算机的本机IP地址和主机名的方法。第一种方法利用socket模块的gethostname和gethostbyname_ex函数;第二种方法通过创建一个UDP套接字并连接到外部服务器来获取IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值