📌  相关文章
📜  查看正在使用的端口 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:40:26.056000             🧑  作者: Mango

TypeScript:查看正在使用的端口

当我们需要部署一个 web 应用或者创建一个本地服务器时,需要知道当前系统中有哪些端口正在被使用。下面将介绍在 TypeScript 中如何查看正在使用的端口。

方法1:使用命令行

我们可以使用以下命令列出正在使用的端口:

sudo lsof -i -P -n | grep LISTEN

这条命令将列出所有正在监听的网络连接(包括 IPv4 和 IPv6),并显示它们所使用的端口和进程 ID。如果我们只想看特定端口的信息,例如 8080 端口,可以使用以下命令:

sudo lsof -i :8080
方法2:使用 Node.js

如果我们正在使用 Node.js 运行应用程序,可以通过以下代码片段在 TypeScript 中查看正在使用的端口:

import * as net from 'net';

function isPortTaken(port: number): Promise<boolean> {
  return new Promise((resolve) => {
    const server = net.createServer((socket) => {
      socket.write('Echo server\r\n');
      socket.pipe(socket);
    });

    server.listen(port, 'localhost');

    server.on('error', () => {
      resolve(true);
    });

    server.on('listening', () => {
      server.close();
      resolve(false);
    });
  });
}

async function checkPortUsage() {
  const port = 8080;
  const isTaken = await isPortTaken(port);
  console.log(`Port ${port} is ${isTaken ? 'in use' : 'available'}`);
}

checkPortUsage();

以上代码片段包含了一个名为 isPortTaken 的函数,它会尝试监听我们所要检查的端口(在这里是 8080),如果监听失败,说明该端口已经被其他进程使用,返回 true;否则说明该端口可用,返回 false。通过该函数我们可以检查所有要使用的端口是否被占用。

结论

以上两种方法都可以用于查看正在使用的端口,我们根据实际情况选择不同的方法即可。如果是在 Node.js 中,可以使用第二种方法进行检查。如果是需要查看系统中所有端口的占用情况,可以使用第一种方法。