在 Node.js 中获取本地活动 IPv4 地址

问题描述 投票:0回答:1

我正在尝试开发一个通过 HTTP 协议在设备之间进行通信的程序。如果我硬编码当前设备的 active IP 地址(即网络路由器分配给设备的本地 IPv4 地址),我可以毫无问题地完成此操作。

但是,我希望程序能够自动确定本地的活动 IPv4 地址,这样无论本地 IPv4 地址如何,代码都可以在任何设备上正常运行,无需修改。

我尝试使用 os.networkInterfaces(),但这返回一个包含设备可用的所有适配器的数组。这些适配器具有不同的密钥,具体取决于操作系统、设备、语言等,这使得确定活动本地 IP 地址变得困难。

我还尝试使用 NPM“ip”模块中的 ip.address(),但这在某些情况下会返回错误的 IP 地址。在我的桌面上(通过以太网连接),它返回正确的本地 IP(在 10.x.x.x 范围内)。然而,在我的笔记本电脑上(通过 WiFi 连接),它会返回以太网适配器的 IP 地址(在 192.168.x.x 范围内),即使该适配器未在使用中也是如此。

就我而言,两个设备都应返回 10.x.x.x 范围内的 IP,因为我的路由器分配了此范围内的 IP。

当我同时在台式机和笔记本电脑上托管服务器,然后使用 NPM“本地设备”模块查找本地设备时,我的台式机和笔记本电脑都只能找到 10.x.x.x 范围内的 IP,这意味着我的笔记本电脑可以识别并 ping 我的台式机,但我的台式机无法识别并 ping 我的笔记本电脑(因为笔记本电脑的服务器在 192.168.x.x 范围内运行,因为这是 ip.address() 返回的 IP)。

所以我的问题归结为:如何确定 Node.js 中设备的当前 ACTIVE IP 地址?例如,就我的笔记本电脑而言,我想确定通过 WiFi 连接到网络时 WiFi 适配器的 IP 地址(在 10.x.x.x 范围内)。

javascript node.js networking ip ip-address
1个回答
0
投票

没关系,我刚刚意识到使用

HTTP.createServer().listen()
时可以省略主机名,Node 将在所有可用的本地 IP 地址上托管服务器,这似乎解决了问题。

谢谢,ChatGPT。

© www.soinside.com 2019 - 2024. All rights reserved.