Node.js检测端口(port)是否被占用的简单示例
前言
在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSLModem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务。这篇文章的目的是为了解决ssr工具起多个服务的时候端口被占用的情况,下面跟大家分享研究的代码片段,有需要的可以参考借鉴。
示例代码
//检测port是否被占用
functionprobe(port,callback){
varserver=net.createServer().listen(port)
varcalledOnce=false
vartimeoutRef=setTimeout(function(){
calledOnce=true
callback(false,port)
},2000)
timeoutRef.unref()
varconnected=false
server.on('listening',function(){
clearTimeout(timeoutRef)
if(server)
server.close()
if(!calledOnce){
calledOnce=true
callback(true,port)
}
})
server.on('error',function(err){
clearTimeout(timeoutRef)
varresult=true
if(err.code==='EADDRINUSE')
result=false
if(!calledOnce){
calledOnce=true
callback(result,port)
}
})
}
functionserver(_port){
varpt=_port||__port;
probe(pt,function(bl,_pt){
//端口被占用bl返回false
//_pt:传入的端口号
if(bl===true){
//ssr(_pt)
server=http.createServer(connListener);
server=server.listen(parseInt(_pt,10));
console.log("\nStaticfileserverrunningat"+"\n\n=>http://localhost:"+_pt+'\n');
}else{
server(_pt+1)
}
})
}
总结
以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。