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

如何获取同一局域网内运行Express服务器的设备私有IP(Electron环境)

获取同一Wi-Fi下Electron服务器的私有IP方法

以下是几种在Electron环境中获取设备私有IP的实用方案,适配跨平台场景:

方法1:使用Node.js内置os模块解析网络接口

Electron基于Node.js,可直接调用os模块遍历本机网络接口,筛选出Wi-Fi对应的私有IPv4地址:

const os = require('os');

function getPrivateIP() {
  const interfaces = os.networkInterfaces();
  for (const name of Object.keys(interfaces)) {
    for (const iface of interfaces[name]) {
      // 跳过IPv6和回环地址
      if (iface.family !== 'IPv4' || iface.internal) continue;
      // 匹配私有IP段:192.168.x.x / 10.x.x.x / 172.16-31.x.x
      if (/^(192\.168|10\.|172\.(1[6-9]|2[0-9]|3[0-1]))\./.test(iface.address)) {
        return iface.address;
      }
    }
  }
  return '127.0.0.1'; //  fallback到本地回环
}

// 使用示例
const serverIP = getPrivateIP();
console.log(`服务器私有IP: ${serverIP}`);

这个方法无需依赖外部工具,纯Node.js实现,跨平台兼容性好。

方法2:调用系统命令解析输出

针对不同平台执行系统网络命令,提取私有IP:

const { exec } = require('child_process');
const os = require('os');

function getPrivateIPViaCmd(callback) {
  const platform = os.platform();
  let cmd = '';

  if (platform === 'win32') {
    cmd = 'ipconfig | findstr /R /C:"IPv4 Address.*[0-9].[0-9].[0-9].[0-9]"';
  } else if (platform === 'darwin') {
    cmd = 'ifconfig | grep "inet " | grep -v 127.0.0.1 | awk "{print $2}"';
  } else if (platform === 'linux') {
    cmd = 'ip addr show | grep "inet " | grep -v 127.0.0.1 | awk "{print $2}" | cut -d/ -f1';
  }

  exec(cmd, (error, stdout) => {
    if (error) {
      callback('127.0.0.1');
      return;
    }
    // 提取第一个有效私有IP
    const ipList = stdout.trim().split('\n').filter(ip => /^(192\.168|10\.|172\.(1[6-9]|2[0-9]|3[0-1]))\./.test(ip));
    callback(ipList[0] || '127.0.0.1');
  });
}

// 使用示例
getPrivateIPViaCmd((serverIP) => {
  console.log(`服务器私有IP: ${serverIP}`);
});

注意:这个方法依赖系统命令,需确保Electron应用有足够权限执行终端命令。

额外提示

  • 服务器已绑定0.0.0.0,说明已监听所有可用网卡,只要客户端和服务器在同一Wi-Fi下,使用上述方法获取的私有IP加上服务器端口(如http://${serverIP}:3000/api)即可正常调用API。
  • 如果存在多个网卡(如同时连有线和Wi-Fi),建议优先筛选Wi-Fi接口的IP(可通过接口名称判断,比如Windows的"WLAN"、macOS的"en0"、Linux的"wlan0")。

内容的提问来源于stack exchange,提问作者Gaurav Bordoloi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:05:17