📅  最后修改于: 2023-12-03 15:24:26.083000             🧑  作者: Mango
在开发过程中,我们经常需要检查某个程序是否正在运行中,以及它所占用的端口号。本文将介绍在 Windows 中检查打开的端口的方法,并使用 TypeScript 编写一段代码来实现端口的检测。
在 Windows 中,我们可以使用命令行工具 netstat
来检查当前打开的端口。具体步骤如下:
打开命令行工具。在 Windows 中,可以按下 Win + R
快捷键打开运行窗口,然后输入 cmd
来打开命令行工具。
执行以下命令来列出当前打开的所有端口和对应的进程:
netstat -ano
这个命令会列出所有当前在使用的端口(包括 TCP 和 UDP),以及它们所对应的进程 ID。可以根据这些信息进一步判断某个程序是否正在运行,并确定它所占用的端口号。
除了手动执行命令来检查端口之外,我们还可以使用 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 编写了一段简单的端口检测代码。在实际开发过程中,我们经常需要使用这些技巧来调试和排查问题,希望本文能帮助读者更好地理解和掌握这些技巧。