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