api 获取本机ip

Python中可用requests调用公网API或

获取本机IP地址的API方法详解

获取本机IP地址的常见方式

方法类型 适用场景 特点描述
系统API调用 需要精确控制网络配置的场景 直接访问底层网络接口
编程语言标准库 快速开发跨平台应用 封装度高,调用简单
第三方网络服务 需要获取公网IP或绕过NAT的场景 依赖外部服务,存在隐私风险

操作系统级API获取方法

Windows系统

import socket
def get_windows_ip():
    hostname = socket.gethostname()
    ip = socket.gethostbyname(hostname)
    return ip
print(get_windows_ip())

Linux/macOS系统

# 通过系统命令获取
ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'

跨平台通用方法

import socket
def get_local_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        # 连接Google公共DNS服务器(不实际发送数据)
        s.connect(("8.8.8.8", 80))
        ip = s.getsockname()[0]
    except Exception:
        ip = "127.0.0.1"
    finally:
        s.close()
    return ip
print(get_local_ip())

编程语言实现对比

语言 核心API 获取方式说明
Python socket模块 创建UDP连接获取本地socket地址
Java InetAddress 通过InetAddress.getLocalHost()
Go net 使用InterfaceAddrs()遍历网卡
C# System.Net命名空间 通过Dns.GetHostEntry获取

注意事项

  1. 多网卡环境:服务器/虚拟机可能存在多个IP地址,需指定网络接口(如eth0、wlan0)
  2. NAT环境:内网设备获取的IP通常是私有地址(如192.168.x.x),非公网IP
  3. 权限要求:部分系统API需要管理员权限才能访问完整网络信息
  4. IPv6支持:现代系统需同时处理IPv4和IPv6地址格式

相关问题与解答

Q1:如何区分内网IP和公网IP?

api 获取本机ip

  • 解答:内网IP范围包括:
    • 0.0.0~10.255.255.255
    • 16.0.0~172.31.255.255
    • 168.0.0~192.168.255.255
      公网IP需要通过STUN服务器或公网API验证,示例:
      import requests

def get_public_ip():
response = requests.get(“https://api.ipify.org?format=json”)
return response.json().get(“ip”)

api 获取本机ip


**Q2:获取的IP地址包含端口号怎么办?**
**解答**:当使用`s.getsockname()`时,返回的是`(ip, port)`元组,需提取第一个元素。
```python
ip, port = s.getsockname()
local_ip = ip

以上就是关于“api 获取本机ip”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

api 获取本机ip

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-05-10 07:39
下一篇 2025-05-10 07:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信