nodejs获取1个可用の端口,检查端口是否被占用(完美方案)

820次阅读
没有评论


nodejs检查端口是否被占用,先看个运行效果:

E:wamp64wwwtmpProtryuseport>node t.js
端口:8022被占用

端口:8023被占用

端口:8024可用

没错,它会一直递归检测端口是否可用,直到可用。

代码:

const net = require('net');
 
const tryUsePort = async function(port, portAvailableCallback){
    function portUsed(port){
        return new Promise((resolve, reject)=>{
            let server = net.createServer().listen(port);
            server.on('listening',function(){
                server.close();
                resolve(port);
            });
            server.on('error',function(err){
                if(err.code == 'EADDRINUSE'){
                    resolve(err);
                }
            });             
        });
    }

    let res = await portUsed(port);
    if(res instanceof Error){
        console.log(`端口:${port}被占用n`);
        port++;
        tryUsePort(port, portAvailableCallback);
    }else{
        portAvailableCallback(port);
    }
}
 
// 测试 
tryUsePort(8022 ,function(port){
    // do something ...
    console.log(`端口:${port}可用n`);
});

参考:

  1. Node.js内部是如何捕获异步错误の https://zhuanlan.zhihu.com/p/62210238     

facingscreen
版权声明:本站原创文章,由 facingscreen2022-08-12发表,共计753字。
转载说明:本文为搜栈网原创文章,除特殊说明外皆由CC-4.0协议发布,转载请注明出处,如有帮助欢迎打赏。
评论(没有评论)
验证码