掌握Node.js端口查询技巧,轻松排查网络问题!

发布时间:2025-06-09 10:00:02

引言

在Node.js开辟过程中,端口查询是一个罕见的操纵,它有助于我们懂得利用顺序的收集连接状况,排查收集成绩。本文将具体介绍如何在Node.js中查询端口,并供给一些实用的技能。

1. 利用Node.js内置模块

Node.js内置了net模块,可能用来创建收集效劳器跟客户端。经由过程这个模块,我们可能轻松查询端口信息。

1.1 创建效劳器并监听端口

const net = require('net');

const server = net.createServer((socket) => {
  console.log('Client connected:', socket.remoteAddress, socket.remotePort);
});

server.listen(8080, () => {
  console.log('Server listening on port 8080');
});

1.2 查询效劳器监听的端口

鄙人面的代码中,效劳器监听在8080端口。我们可能经由过程拜访server.address()方法来获取端口信息。

const address = server.address();
console.log('Server port:', address.port);

2. 利用os模块

Node.js的os模块供给了有关操纵体系的信息,包含收集接口跟端口信息。

2.1 查询当地开放的端口

const os = require('os');

const ifaces = os.networkInterfaces();

for (const iface in ifaces) {
  ifaces[iface].forEach((details) => {
    if (details.family === 'IPv4' && !details.internal) {
      console.log(`Interface: ${iface}, IP: ${details.address}, Port: ${details.port}`);
    }
  });
}

2.2 查询特定端口的占用情况

const net = require('net');

const port = 8080;
const server = net.createServer();
server.listen(port, () => {
  console.log(`Server listening on port ${port}`);
  server.close(() => {
    console.log(`Server closed on port ${port}`);
  });
});

server.on('error', (err) => {
  if (err.code === 'EADDRINUSE') {
    console.log(`Port ${port} is already in use`);
  }
});

3. 利用第三方库

除了Node.js内置模块,另有一些第三方库可能帮助我们查询端口信息。

3.1 利用portscanner

portscanner是一个用于扫描跟测试端口能否开放的Node.js库。

const portscanner = require('portscanner');

portscanner.scan('127.0.0.1', 1, 65535, (err, ports) => {
  if (err) {
    console.log(err);
  } else {
    console.log('Open ports:', ports);
  }
});

3.2 利用node-portfinder

node-portfinder可能帮助我们找到可用的端口。

const portfinder = require('node-portfinder');

portfinder.basePort = 3000;
portfinder.find((port) => {
  console.log('Found port:', port);
});

总结

经由过程以上方法,我们可能轻松地查询Node.js利用顺序的端口信息,从而帮助我们排查收集成绩。在现实开辟过程中,可能根据具体须要抉择合适的方法。