📅  最后修改于: 2023-12-03 14:55:26.670000             🧑  作者: Mango
本文介绍如何在 Python 中获取本地 IP 地址。在网络编程中,获取本地 IP 地址是非常常见的操作,用于绑定本地端口和监听网络连接。
import socket
def get_local_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# 随便发起一个 UDP 请求
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
except Exception:
ip = '127.0.0.1'
finally:
s.close()
return ip
上面的代码使用了 socket 库,通过发起一个 UDP 请求,然后获取 socket 的 IP 地址。需要注意的是,如果本机没有网络连接,这种方法可能无法获取正确的 IP 地址。
import netifaces
def get_local_ip():
interfaces = netifaces.interfaces()
for interface in interfaces:
# 排除虚拟接口和 loopback 接口
if interface.startswith('lo') or interface.startswith('vir'):
continue
addrs = netifaces.ifaddresses(interface)
if netifaces.AF_INET in addrs:
return addrs[netifaces.AF_INET][0]['addr']
return '127.0.0.1'
上面的代码使用了 netifaces 库,它可以方便地获取网络接口信息。该方法首先获取所有的网络接口,然后遍历这些接口,找到第一个 IPv4 地址不是 loopback 或虚拟接口地址的接口,返回该接口的 IP 地址。
本文介绍了两种方法获取本地 IP 地址,分别是使用 socket 库和 netifaces 库。两种方法的差别在于,socket 库方法依赖于网络连接,可能会受到网络环境的影响,而 netifaces 库方法则不依赖于网络连接,可以稳定地获得本地 IP 地址。