Полное руководство по поиску работающих портов в Node.js

При работе с приложениями Node.js часто необходимо узнать, какие порты используются в данный момент. Если вам нужно диагностировать сетевые проблемы, выявлять конфликтующие службы или обеспечивать правильную связь между компонентами сервера, наличие надежного метода обнаружения работающих портов имеет решающее значение. В этой статье блога мы рассмотрим несколько методов выполнения этой задачи, а также примеры кода.

Метод 1. Использование модуля net

Модуль netв Node.js предоставляет простой способ взаимодействия с сетевыми функциями. Чтобы найти работающие порты, мы можем использовать функцию isPortReachableмодуля net. Вот пример:

const net = require('net');
const checkPort = (port) => {
  const tester = net.createConnection({ port }, () => {
    console.log(`Port ${port} is open`);
    tester.end();
  });
  tester.on('error', (err) => {
    console.log(`Port ${port} is closed`);
  });
};
checkPort(3000); // Replace with the desired port number

Метод 2: использование пакета tcp-port-used

Другой подход — использовать пакет tcp-port-used, который упрощает задачи сканирования портов. Установите пакет с помощью npm или Yarn:

npm install tcp-port-used

Затем вы можете использовать его в своем коде Node.js следующим образом:

const tcpPortUsed = require('tcp-port-used');
const checkPort = async (port) => {
  const inUse = await tcpPortUsed.check(port);
  console.log(`Port ${port} is ${inUse ? 'open' : 'closed'}`);
};
checkPort(3000); // Replace with the desired port number

Способ 3. Выполнение системной команды

Если вы предпочитаете более низкоуровневый подход, вы можете выполнить системную команду, чтобы проверить наличие работающих портов. Вот пример использования функции execиз встроенного модуля child_process:

const { exec } = require('child_process');
const checkPort = (port) => {
  exec(`lsof -i :${port}`, (err, stdout) => {
    if (stdout.includes('LISTEN')) {
      console.log(`Port ${port} is open`);
    } else {
      console.log(`Port ${port} is closed`);
    }
  });
};
checkPort(3000); // Replace with the desired port number

В этой статье мы рассмотрели три различных метода поиска работающих портов в среде Node.js. Предпочитаете ли вы использовать встроенный модуль net, использовать сторонний пакет, например tcp-port-used, или выполнять системные команды через child_process, теперь вы можете иметь различные варианты выполнения этой задачи. Выберите метод, который соответствует вашим требованиям, и с легкостью интегрируйте его в свои приложения Node.js.

Не забывайте проявлять осторожность при сканировании портов и убедитесь, что у вас есть необходимые полномочия для выполнения таких действий. Удачной охоты за портами в ваших проектах Node.js!