📜  获取本地 ip - Python (1)

📅  最后修改于: 2023-12-03 14:57:16.442000             🧑  作者: Mango

获取本地 IP - Python

在网络编程中,获取本地 IP地址是相当重要的。幸运的是,Python语言提供了一种非常简单的方式来做到这一点。使用Python的socket库,你可以轻松地获取你的计算机的IP地址。

方式一:使用socket库

使用Python的socket库,可以很方便地获取本地IP地址。代码如下:

import socket
ip_address = socket.gethostbyname(socket.gethostname())
print(ip_address)

运行上述代码输出的结果将包含了本地IP地址。

详细解释

首先,导入Python的socket库,然后使用socket.gethostname()方法获取当前主机的主机名。这个方法获取的是本地计算机的名字,会在局域网内唯一。然后,使用socket.gethostbyname()方法来获取IP地址。

方式二:使用网卡信息

如果想要获取所有网卡信息,可能需要使用Python的netifaces库。例如,可以使用如下代码来查看所有可用的网卡信息:

import netifaces

# 获取所有的网络接口
interfaces = netifaces.interfaces()

# 打印所有网络接口的信息
for interface in interfaces:
    print(f"---{interface}---")
    addresses = netifaces.ifaddresses(interface)

    # 打印网络接口的Mac地址
    if netifaces.AF_LINK in addresses:
        mac_address = addresses[netifaces.AF_LINK][0]['addr']
        print(f" Mac Address: {mac_address}")

    # 打印网络接口的IP地址
    if netifaces.AF_INET in addresses:
        ip_address = addresses[netifaces.AF_INET][0]['addr']
        print(f" IP Address: {ip_address}")
详细解释

首先,我们导入了Python的netifaces库。调用接口netifaces.interfaces()返回一个列表,包含了所有当前计算机上可用的网络接口。对于每个网络接口,我们可以使用另一个Python函数 netifaces.ifaddresses()来获取其地址信息。这个函数返回一个字典,包含不同地址族的地址信息,例如IP地址 (AF_INET)、广播地址、子网掩码等。最后,我们可以打印出我们所需要的信息。

结论

一个好的网络应用程序需要知道它在何处运行,当然也需要知道它所在的网络。因此,在编写任何网络编程代码之前,首先需要确定本地IP地址,上述两种方法都是不错的选择。那么,到底使用哪一种方法取决于应用程序的需求和情况。