You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python结合Flet框架获取Android设备的网络IP

在Android设备上通过Flet/Python获取网络IP的解决方案

问题原因

Android系统默认将主机名映射到回环地址127.0.0.1,所以socket.gethostbyname(socket.gethostname())必然返回本地回环地址,无法获取实际网络IP。

解决方案

以下两种方法可在Android设备上获取有效网络IP,即使无互联网接入(只要设备连接了局域网/WiFi/热点):

方法1:使用原生socket+fcntl遍历网络接口

无需额外依赖,纯Python实现:

import socket
import fcntl
import struct
import array

def get_local_ip():
    max_interfaces = 128
    buffer_size = max_interfaces * 32
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 获取所有网络接口信息
    name_buffer = array.array('B', b'\0' * buffer_size)
    result = fcntl.ioctl(
        sock.fileno(),
        0x8912,  # SIOCGIFCONF 指令
        struct.pack('iL', buffer_size, name_buffer.buffer_info()[0])
    )
    actual_size = struct.unpack('iL', result)[0]
    interface_data = name_buffer.tobytes()
    
    # 解析接口数据,筛选有效IP
    for i in range(0, actual_size, 40):
        interface_name = interface_data[i:i+16].split(b'\0', 1)[0].decode()
        ip_address = socket.inet_ntoa(interface_data[i+20:i+24])
        # 排除回环接口和无效地址
        if ip_address != '127.0.0.1' and not interface_name.startswith(('lo', 'dummy')):
            return ip_address
    # 无有效IP时返回回环地址
    return '127.0.0.1'

方法2:使用netifaces库(更简洁)

netifaces封装了网络接口操作,代码更易读:

  1. 先安装依赖:
pip install netifaces
  1. 实现代码:
import netifaces

def get_local_ip():
    # 遍历所有网络接口
    for interface in netifaces.interfaces():
        # 跳过回环接口
        if interface == 'lo':
            continue
        # 获取接口的地址信息
        addr_info = netifaces.ifaddresses(interface)
        # 提取IPv4地址
        if netifaces.AF_INET in addr_info:
            for ip_details in addr_info[netifaces.AF_INET]:
                ip = ip_details['addr']
                if ip != '127.0.0.1':
                    return ip
    return '127.0.0.1'

注意事项

  • 若设备未连接任何网络(无WiFi、无热点、无移动数据),则只能返回127.0.0.1,因为此时设备不存在其他网络IP。
  • 使用Flet打包Android应用时,需确保依赖库(如netifaces)被正确包含在打包配置中。

内容的提问来源于stack exchange,提问作者Hossein Bahiraei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:54:54