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

nodejs 获取本地局域网 ip 扫描本地端口

因为傻逼老板的垃圾需求,不得不成长

示例代码:
获取本地局域网  ip  地址:

需要注意的是:如果存在虚拟机网络,则返回的是虚拟机网络的  ipv4  地址

import os from 'os';
export const getLocalIp = () => {const interfaces = os.networkInterfaces();for (const name of Object.keys(interfaces)) {for (const net of interfaces[name]) {if (net.family === 'IPv4' && !net.internal) {return net.address;}}}return 'Can not get local IP';
};

扫描本地端口:

因为我需要查找本地几个  ip  的  3000  端口是否开放   可根据实际需求自行修改部分代码:

import os from 'os';
import net from "net";
const { Socket } = net;const timeout = 100;
export const getLocalIp = () => {const interfaces = os.networkInterfaces();for (const name of Object.keys(interfaces)) {for (const net of interfaces[name]) {if (net.family === 'IPv4' && !net.internal) {return net.address;}}}return 'Can not get local IP';
};const scanHostPort = (host, port, cb) => {return new Promise((resolve, reject) => {const socket = new Socket();socket.setTimeout(timeout);socket.on("connect", function () {console.debug(`链接成功:${host}`);socket.end();cb && cb(null, host);resolve(host);});socket.on("timeout", function () {// console.error(`链接超时:${host}`);socket.destroy();cb && cb(new Error("timeout"), host);resolve(false);});socket.on("error", function (err) {// console.warn(`链接失败:${host}`);cb && cb(err, host);resolve(false);});socket.on("close", function (err) {});socket.connect(port, host);});
}export const scanIPs = async () => {const current_ip = getLocalIp();let current_ip_parts = current_ip.split('.');current_ip_parts.pop();current_ip_parts = current_ip_parts.join('.');const deferCache = [];for (let index = 0; index <= 255; index++) {deferCache.push(scanHostPort(`${current_ip_parts}.${index}`,3000));}const result = (await Promise.all(deferCache)).filter((it) => it);return result;
}

http://www.lryc.cn/news/499466.html

相关文章:

  • 区块链签名种类
  • 【062B】基于51单片机无线病房呼叫系统(+时间)【Keil程序+报告+原理图】
  • 突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!
  • 【pyspark学习从入门到精通24】机器学习库_7
  • Echart折线图属性设置 vue2
  • LabVIEW-简单串口助手
  • Linux下,用ufw实现端口关闭、流量控制(二)
  • C#开发-集合使用和技巧(九)Join的用法
  • Dockerfile容器镜像构建技术
  • Github 2024-12-01 开源项目月报 Top20
  • Spring Boot 3项目集成Swagger3教程
  • NISP信息安全一级考试200道;免费题库;大风车题库
  • Android ConstraintLayout 约束布局的使用手册
  • 在网安中什么是白帽子
  • 软件专业科目难度分级 你输在了哪里?
  • 微信小程序实现图片拖拽调换位置效果 -- 开箱即用
  • 关于“浔川AI翻译”使用情况的调研报告
  • 《芯片:科技之核,未来之路》
  • ️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206
  • 使用Tomcat搭建简易文件服务器
  • 《C++赋能:构建智能工业控制系统优化算法新引擎》
  • node.js中跨域请求有几种实现方法
  • Node.js新作《循序渐进Node.js企业级开发实践》简介
  • 常见排序算法总结 (四) - 快速排序与随机选择
  • Doris的基础架构
  • python录制鼠标键盘操作循环播放
  • 标书里的“废标雷区”:你踩过几个?
  • centos下使用acme来自动获取免费通配符ssl证书,并发布到nginx服务,(DNS服务为阿里云)
  • 基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】
  • Hyperf jsonrpc