📌  相关文章
📜  如何在 Windows 中检查打开的端口 - TypeScript (1)

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

如何在 Windows 中检查打开的端口 - TypeScript

在开发过程中,我们经常需要检查某个程序是否正在运行中,以及它所占用的端口号。本文将介绍在 Windows 中检查打开的端口的方法,并使用 TypeScript 编写一段代码来实现端口的检测。

检查打开的端口

在 Windows 中,我们可以使用命令行工具 netstat 来检查当前打开的端口。具体步骤如下:

  1. 打开命令行工具。在 Windows 中,可以按下 Win + R 快捷键打开运行窗口,然后输入 cmd 来打开命令行工具。

  2. 执行以下命令来列出当前打开的所有端口和对应的进程:

    netstat -ano
    

    这个命令会列出所有当前在使用的端口(包括 TCP 和 UDP),以及它们所对应的进程 ID。可以根据这些信息进一步判断某个程序是否正在运行,并确定它所占用的端口号。

使用 TypeScript 编写端口检测工具

除了手动执行命令来检查端口之外,我们还可以使用 TypeScript 编写一段代码来实现端口的检测。以下是一段简单的 TypeScript 代码,它实现了输入端口号,然后查询该端口是否被占用的功能:

import * as net from "net";

function checkPort(port: number): Promise<boolean> {
  return new Promise((resolve, reject) => {
    const server = net.createServer();

    server.on("error", (err: any) => {
      if (err.code === "EADDRINUSE") {
        resolve(true);
      } else {
        reject(err);
      }
    });

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

    server.listen(port);
  });
}

// 示例代码:检查端口 3000 是否被占用
checkPort(3000).then(isUsed => {
  console.log(`端口 3000 ${isUsed ? "已被占用" : "未被占用"}`);
});

这段代码使用 net.createServer() 函数创建了一个 TCP 服务器,然后尝试在指定的端口号上启动该服务器。如果端口号已经被占用(即启动服务器时产生了 EADDRINUSE 错误),则表示该端口已经被其他程序占用;否则,该端口尚未被占用。

我们可以使用 Promise 和 async/await 来实现更复杂的端口检测功能,比如检测某个程序是否正在运行中,并确定它所占用的端口号。

总结

通过本文的介绍,我们学习了在 Windows 中检查打开的端口的方法,并使用 TypeScript 编写了一段简单的端口检测代码。在实际开发过程中,我们经常需要使用这些技巧来调试和排查问题,希望本文能帮助读者更好地理解和掌握这些技巧。