当前位置: 首页 > article >正文

electron 获取本机 ip 地址

1.  主进程代码

在主进程中,使用 `os` 模块获取本机 IP 地址,并通过 `ipcMain` 将结果发送给渲染进程。

// main.js

const { app, BrowserWindow, ipcMain } = require("electron");

const os = require("os");


function createWindow() {

  const win = new BrowserWindow({

    width: 800,

    height: 600,

    webPreferences: {

      nodeIntegration: true,

      contextBridge: true,

    },

  });

  win.loadFile("index.html");

}



app.whenReady().then(() => {

  createWindow();



  app.on("activate", () => {

    if (BrowserWindow.getAllWindows().length === 0) {

      createWindow();

    }

  });

});

// 获取本机 IP 地址的函数

function getLocalIP() {

  let interfaces = os.networkInterfaces();

  for (let devName in interfaces) {

    let iface = interfaces[devName];

    for (let i = 0; i < iface.length; i++) {

      let alias = iface[i];

      if (

        alias.family === "IPv4" &&

        alias.address !== "127.0.0.1" &&

        !alias.internal

      ) {

        return alias.address;

      }

    }

  }

}

// 监听渲染进程的请求

ipcMain.on("get-ip-address", (event) => {

  const localIP = getLocalIP();

  event.reply("ip-address", localIP);

});

2. 渲染进程代码

在渲染进程中,使用 `ipcRenderer` 向主进程发送请求,并接收主进程返回的 IP 地址。

<!-- index.html -->

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <title>Electron IP Address</title>

  </head>

  <body>

    <button id="get-ip">获取本机 IP 地址</button>

    <p id="ip-address"></p>

    <script>

      const { ipcRenderer } = require("electron");

      const getIpButton = document.getElementById("get-ip");

      const ipAddressDisplay = document.getElementById("ip-address");



      getIpButton.onclick = () => {

        ipcRenderer.send("get-ip-address");

      };



      ipcRenderer.on("ip-address", (event, ip) => {

        ipAddressDisplay.textContent = ip;

      });

    </script>

  </body>

</html>


http://www.kler.cn/a/507232.html

相关文章:

  • SurfaceFlinger代码笔记
  • LLMs之RAG:《EdgeRAG: Online-Indexed RAG for Edge Devices》翻译与解读
  • ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中
  • 《小迪安全》学习笔记05
  • 基于 K-Means 聚类分析实现人脸照片的快速分类
  • 【docker踩坑记录】
  • 测试人员面试需要掌握的内容
  • 谷歌浏览器与Safari的性能对比
  • Go基础之环境搭建
  • 无人机吊运详解,极大提高运输效率降低人工成本
  • HTTP 安全:HTTPS 原理与配置
  • 测试工程师的linux 命令学习(持续更新中)
  • WPF如何跨线程更新界面
  • EasyExcel的应用
  • springcloud中的Feign调用
  • GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求
  • javaScript 入门与程序设计
  • 北京科技创新实力强劲,将在 CES Asia 2025 精彩呈现
  • halcon opencv-python C# 自适应不同大小图像并保持纵横比
  • DNS介绍与部署-Day 01
  • Lambda 架构之批处理层深度解析:从原理到 Java 实战
  • DETR论文阅读
  • openCV项目实战——信用卡数字识别
  • Vue 开发者的 React 实战指南:测试篇
  • CMake构建C#工程(protobuf)
  • Web 实时消息推送的七种实现方案