21xrx.com
2024-12-22 20:58:44 Sunday
登录
文章检索 我的文章 写文章
如何在node.js中判断端口是否被占用?
2023-07-05 00:29:25 深夜i     --     --
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模块检测端口是否被占用是一项基本技能。通过以上示例代码,你可以很好地掌握检测端口是否被占用的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复