21xrx.com
2025-06-07 03:15:22 Saturday
文章检索 我的文章 写文章
如何在node.js中判断端口是否被占用?
2023-07-05 00:29:25 深夜i     41     0
node js 判断 端口 占用

在node.js中,判断端口是否被占用是一个常见的任务。

要检测一个端口是否被占用,我们可以使用node.js内置的net模块。该模块提供了一个createServer函数,可以用来创建一个TCP服务器。如果端口已被占用,那么createServer函数会抛出一个“EADDRINUSE”异常。

以下是一个示例代码,演示如何使用net模块检测端口是否被占用:

const net = require('net');
const checkPort = (port, hostname) => {
 const promise = new Promise((resolve, reject) => {
  const server = net.createServer();
  server.once('error', (err) => {
   if (err.code === 'EADDRINUSE') {
    reject(`${port}端口已被占用`);
   } else {
    reject(err);
   }
  });
  server.once('listening', () => {
   server.close();
   resolve(`${port}端口可用`);
  });
  server.listen(port, hostname);
 });
 return promise;
};
checkPort(8080, 'localhost')
 .then((message) => {
  console.log(message);
 })
 .catch((err) => {
  console.error(err);
 });

如上代码中,创建了一个名为“checkPort”的函数,该函数接受两个参数:端口号和主机名。该函数返回一个Promise对象,用于处理异步操作结果。在函数中,使用net.createServer()创建一个TCP服务器,使用server.once()监听服务器启动和错误事件。如果端口已被占用,则抛出EADDRINUSE异常;否则,返回‘端口可用’的消息。

该函数返回的Promise对象可以使用.then()链式调用来处理结果,也可以使用.catch()进行错误处理。

使用node.js的net模块检测端口是否被占用是一项基本技能。通过以上示例代码,你可以很好地掌握检测端口是否被占用的方法。

  
  

评论区