使用Python查看本机的IP地址(编码实现)

2023年 10月 12日 76.7k 0

如何使用python查看本机的IP地址?

要查看本机的 IP 地址,可以使用 Python 中的 socket 模块来获取。下面是一个示例代码:

import socket

def get_ip_address():
    host_name = socket.gethostname()
    ip_address = socket.gethostbyname(host_name)
    return ip_address

ip_address = get_ip_address()
print("本机的 IP 地址是:", ip_address)

上述代码中,我们定义了一个名为 get_ip_address 的函数来获取本机的 IP 地址。在函数内部,我们首先使用 socket.gethostname() 获取本机的主机名,然后使用 socket.gethostbyname(host_name) 来获取对应的 IP 地址。

最后,我们调用 get_ip_address() 函数来获取本机的 IP 地址,并将其打印输出。

运行该代码,你将看到类似以下的输出:

本机的 IP 地址是: 192.168.1.100

请注意,此方法返回的 IP 地址是本机连接到局域网的 IP 地址。如果你使用的是多个网络接口或者虚拟网络环境,则可能会返回多个 IP 地址。

希望这个示例能够帮助你获取本机的 IP 地址。如果你有任何其他问题,请随时提问。

如果不引入库呢?

如果不引入库,你可以使用 Python 的标准库和系统命令来获取本机的 IP 地址。下面是一个示例代码:

import subprocess

def get_ip_address():
    result = subprocess.run(["ipconfig"], capture_output=True, text=True)
    output = result.stdout

    # 在输出中查找 IP 地址
    lines = output.split("\n")
    for line in lines:
        if "IPv4 Address" in line:
            ip_address = line.split(":")[1].strip()
            return ip_address

    return None

ip_address = get_ip_address()
if ip_address:
    print("本机的IP地址是:", ip_address)
else:
    print("无法获取本机的IP地址")

在上述代码中,我们使用 subprocess.run() 函数执行系统命令 ipconfig,并使用 capture_output=True 参数来捕获命令的输出。然后,我们将输出的结果进行处理,寻找包含 "IPv4 Address" 的行,并提取出其中的 IP 地址。

最后,我们调用 get_ip_address() 函数来获取本机的 IP 地址,并将其打印输出。

请注意,这种方法依赖于操作系统的命令行工具,并且在不同的操作系统或环境中可能会有所不同。上述示例适用于 Windows 操作系统,并假设可以在命令行中执行 ipconfig 命令。

如果你是在其他操作系统环境中运行 Python,你需要相应地修改命令和解析输出的方式。例如,在 Linux 上可以使用 ifconfig 命令来获取 IP 地址。

希望这个示例能满足你的需求,如果你有任何进一步的问题,请随时提问。

结果为无法获取本机的IP地址,可是我有IP地址呀

非常抱歉给你带来了困惑。如果你能够确认你的设备拥有 IP 地址,但是上述代码无法获取到,那可能是因为使用的方法针对不同的操作系统或网络配置不适用。

在不引入库的情况下,要获取本机的 IP 地址可以尝试以下几种方法:

方法一:使用 os 模块和系统命令

import os

def get_ip_address():
    response = os.popen('ipconfig')  # Windows 系统
    # response = os.popen('ifconfig')  # Linux/Mac 系统

    for line in response.readlines():
        if 'IPv4 Address' in line:
            ip_address = line.split(':')[-1].strip()
            return ip_address

    return None

ip_address = get_ip_address()
if ip_address:
    print("本机的 IP 地址是:", ip_address)
else:
    print("无法获取本机的 IP 地址")

这种方法使用了 os.popen() 函数来执行系统命令(ipconfigifconfig),并读取命令的输出。然后我们在输出中搜索包含 "IPv4 Address" 的行,并提取其中的 IP 地址。

请注意,在 Windows 系统下使用 ipconfig 命令,而在 Linux 或 Mac 系统下使用 ifconfig 命令。

方法二:使用网络套接字

import socket

def get_ip_address():
    # 创建一个 UDP 套接字
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    try:
        # 连接到一个公共的 DNS 服务器(例如 Google 的 DNS:8.8.8.8)
        sock.connect(('8.8.8.8', 80))

        # 获取本机的 IP 地址
        ip_address = sock.getsockname()[0]
        return ip_address
    except Exception as e:
        print("无法获取本机的 IP 地址:", e)

    finally:
        sock.close()

    return None

ip_address = get_ip_address()
if ip_address:
    print("本机的 IP 地址是:", ip_address)
else:
    print("无法获取本机的 IP 地址")

这种方法使用了套接字连接到一个公共的 DNS 服务器(例如 Google 的 DNS:8.8.8.8),然后获取套接字的本地地址,即本机的 IP 地址。

请注意,使用网络套接字的方法可能受到网络环境的限制,例如防火墙设置。

尝试以上两种方法,如果仍然无法获取到 IP 地址,请确保你的网络连接正常并且网络配置正确。

再次为给你带来困扰表示抱歉,希望这次能够解决你的问题。如果还有任何疑问,请随时提问。

连接到一个公共的 DNS 服务器(例如 Google 的 DNS:8.8.8.8)

sock.connect(('8.8.8.8', 80)) 在这段代码中的作用是什么呢?

在这段代码中,sock.connect(('8.8.8.8', 80)) 用于将套接字 sock 连接到一个指定的目标地址。目标地址在这里是 Google 的 DNS 服务器的 IP 地址(8.8.8.8)和端口号(80)。

连接到一个公共的 DNS 服务器的作用是在网络套接字中建立一个可用的连接,以便通过该连接发送和接收数据。这段代码的目的是与 Google 的 DNS 服务器建立连接,以便执行后续的操作。

常见的用例是使用 DNS 服务器来进行 DNS 查询,以解析域名(例如 www.example.com)到 IP 地址。通过建立与 DNS 服务器的连接,可以向服务器发送 DNS 查询请求,并从服务器接收到解析后的 IP 地址。

在这段代码中,连接到 Google 的 DNS 服务器是一种示例,你可以根据需要使用其他的 DNS 服务器或目标地址。

总之,这段代码的作用是建立一个套接字连接到指定的目标地址,以便进行进一步的网络通信操作。

如果你有任何进一步的问题,请随时提问。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论