Python 获取本机IP地址的两个方法
在Python中,我们可以使用不同的方法来获取本机的IP地址。下面将介绍两种常用的方法,并提供示例说明。
方法一:使用socket模块
使用socket模块是获取本机IP地址的一种常见方法。下面是使用socket模块获取本机IP地址的示例代码:
import socket
def get_local_ip():
try:
# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 连接到一个外部的IP地址,这里使用百度的IP地址
s.connect(('www.baidu.com', 80))
# 获取本机IP地址
ip = s.getsockname()[0]
except socket.error:
ip = '无法获取IP地址'
finally:
s.close()
return ip
# 调用函数获取本机IP地址
local_ip = get_local_ip()
print('本机IP地址为:', local_ip)
在上面的示例代码中,我们首先创建了一个socket对象,然后使用connect
方法连接到一个外部的IP地址(这里使用百度的IP地址)。接下来,我们使用getsockname
方法获取本机的IP地址,并返回给调用者。
方法二:使用netifaces模块
另一种获取本机IP地址的方法是使用netifaces模块。下面是使用netifaces模块获取本机IP地址的示例代码:
import netifaces
def get_local_ip():
try:
# 获取所有网络接口
interfaces = netifaces.interfaces()
# 遍历所有网络接口
for interface in interfaces:
# 获取当前网络接口的所有地址
addresses = netifaces.ifaddresses(interface)
# 获取当前网络接口的IPv4地址
if netifaces.AF_INET in addresses:
ip = addresses[netifaces.AF_INET][0]['addr']
break
except:
ip = '无法获取IP地址'
return ip
# 调用函数获取本机IP地址
local_ip = get_local_ip()
print('本机IP地址为:', local_ip)
在上面的示例代码中,我们首先使用netifaces.interfaces()
方法获取所有网络接口。然后,我们遍历所有网络接口,并使用netifaces.ifaddresses()
方法获取当前网络接口的所有地址。最后,我们从中选择IPv4地址并返回给调用者。
这两种方法都可以用来获取本机的IP地址,具体使用哪种方法取决于你的需求和环境。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 获取本机ip地址的两个方法 - Python技术站