在 JavaScript 中获取所有内网 活跃IP 地址
时间: 2024-03-19 16:46:01 浏览: 24
在 JavaScript 中获取所有内网活跃 IP 地址,可以使用 `ping` 命令来检测指定 IP 地址是否可达。下面是一个示例代码:
```javascript
function pingIP(ip) {
return new Promise((resolve, reject) => {
// 构造 ping 命令
const command = process.platform === 'win32' ? `ping -n 1 -w 500 ${ip}` : `ping -c 1 -W 500 ${ip}`;
// 执行 ping 命令
exec(command, (error, stdout, stderr) => {
if (error) {
reject(error);
} else {
resolve(ip);
}
});
});
}
function getActiveInternalIPs() {
return new Promise((resolve, reject) => {
const currentIP = require('current-ip')();
const subnet = currentIP.split('.').slice(0, 3).join('.') + '.';
const promises = [];
// 遍历该网段内的所有 IP 地址
for (let i = 2; i <= 254; i++) {
const ip = subnet + i;
if (ip !== currentIP) {
// 对每个 IP 地址执行 ping 命令
promises.push(pingIP(ip));
}
}
// 等待所有 ping 命令执行完成
Promise.all(promises)
.then(results => {
resolve(results);
})
.catch(error => {
reject(error);
});
});
}
```
该方法需要使用 `exec` 函数执行系统命令,可以在 Node.js 环境下使用。该方法首先获取本机 IP 地址和子网地址,然后遍历该子网地址内的所有 IP 地址,对每个 IP 地址执行 `ping` 命令,如果命令执行成功,则将该 IP 地址加入结果数组中。需要注意的是,该方法执行速度较慢,可能需要几秒钟或几分钟才能返回结果。