返回

JavaScript/Node.js获取本机IP地址:多种方法轻松搞定!

前端

为什么要获取本机IP地址?

获取本机IP地址在许多情况下都很有用,比如:

  • 搭建本地服务器时,需要知道本机IP地址才能让其他设备访问该服务器。
  • 在局域网中,需要知道本机IP地址才能与其他设备进行通信。
  • 需要知道公网IP地址才能访问某些网站或服务。

方法一:使用内置模块

在 Node.js 中,我们可以使用 os 模块来获取本机IP地址。该模块提供了 networkInterfaces() 方法,该方法返回一个对象,其中包含所有网络接口的信息。

const os = require('os');

const networkInterfaces = os.networkInterfaces();

console.log(networkInterfaces);

输出结果类似于:

{
  "en0": [
    {
      "address": "192.168.1.100",
      "netmask": "255.255.255.0",
      "family": "IPv4",
      "mac": "00:11:22:33:44:55",
      "internal": false
    },
    {
      "address": "fe80::1",
      "netmask": "ffff:ffff:ffff:ffff::",
      "family": "IPv6",
      "mac": "00:11:22:33:44:55",
      "internal": true
    }
  ],
  "en1": [
    {
      "address": "10.0.1.100",
      "netmask": "255.255.255.0",
      "family": "IPv4",
      "mac": "00:11:22:33:44:55",
      "internal": true
    },
    {
      "address": "fe80::2",
      "netmask": "ffff:ffff:ffff:ffff::",
      "family": "IPv6",
      "mac": "00:11:22:33:44:55",
      "internal": true
    }
  ]
}

从这个输出结果中,我们可以看到本机的所有网络接口及其对应的IP地址。

方法二:使用第三方库

除了使用内置模块,我们还可以使用第三方库来获取本机IP地址。一个流行的第三方库是 ip 库。

const ip = require('ip');

console.log(ip.address());

输出结果类似于:

192.168.1.100

方法三:使用命令行工具

我们还可以使用命令行工具来获取本机IP地址。在 Windows 系统中,我们可以使用 ipconfig 命令,在 macOS 和 Linux 系统中,我们可以使用 ifconfig 命令。

ipconfig

或者

ifconfig

输出结果类似于:

Windows IP Configuration

Ethernet adapter Ethernet0:

   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.1.100
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

或者

en0: flags=8863<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    ether 00:11:22:33:44:55
    inet6 fe80::1%en0 prefixlen 64 scopeid 0x1
    inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255

从这个输出结果中,我们可以看到本机的IP地址。

总结

以上是获取本机IP地址的几种方法。您可以根据自己的需要选择合适的方法。