При работе с приложениями 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!