真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

利用Node.js檢測(cè)端口是否被占用的方法

前言

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的舒蘭網(wǎng)站建設(shè)公司,舒蘭接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行舒蘭網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

在學(xué)習(xí)tcp/ip的時(shí)候,經(jīng)常遇到一些關(guān)于跟端口有關(guān)的東西,在寫(xiě)網(wǎng)絡(luò)上的一些東西,有時(shí)用的一些端口被提示:端口已被占用,啊啊啊,挺郁悶的,然后就想著將它搞明白,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

Nodejs檢測(cè)端口是否被占用

開(kāi)啟本地服務(wù)時(shí),有這么一種情況:當(dāng)前端口已經(jīng)被另一個(gè)項(xiàng)目使用了,導(dǎo)致服務(wù)開(kāi)啟失敗。

那么接下來(lái),我們通過(guò)簡(jiǎn)簡(jiǎn)單單的十行代碼來(lái)檢測(cè)端口是否已經(jīng)被占用。

思路

想要知道端口是否被占用,我們可以開(kāi)啟一個(gè)新的服務(wù)并監(jiān)聽(tīng)該端口,若開(kāi)啟成功則說(shuō)明端口未被占用,反之該端口已經(jīng)被其他程序使用了。

基本思路有了,下面我們開(kāi)始編寫(xiě)代碼。

基礎(chǔ)代碼

portIsOccupied.js

var net = require('net')

// 檢測(cè)端口是否被占用
function portIsOccupied (port) {
 // 創(chuàng)建服務(wù)并監(jiān)聽(tīng)該端口
 var server = net.createServer().listen(port)

 server.on('listening', function () { // 執(zhí)行這塊代碼說(shuō)明端口未被占用
 server.close() // 關(guān)閉服務(wù)
 console.log('The port【' + port + '】 is available.') // 控制臺(tái)輸出信息
 })

 server.on('error', function (err) {
 if (err.code === 'EADDRINUSE') { // 端口已經(jīng)被使用
  console.log('The port【' + port + '】 is occupied, please change other port.')
 }
 })
}

// 執(zhí)行
portIsOccupied(1987)

測(cè)試

執(zhí)行 node portIsOccupied.js,正常情況下會(huì)輸出 The port【1987】 is available.

使用ssr將當(dāng)前目錄設(shè)置成靜態(tài)服務(wù)器,關(guān)于ssr的使用可以在這里找到 https://github.com/jaywcjlove/ssr,
ssr默認(rèn)會(huì)開(kāi)啟 1987 端口。

這時(shí),再次執(zhí)行 node portIsOccupied.js,輸出 The port【1987】 is occupied, please change other port.

讓程序更加完美

到這里為止,我們已經(jīng)能夠檢測(cè)端口是否被占用。

但是,假如我要檢測(cè)另外一個(gè)端口,每次都得更改文件的端口號(hào),相當(dāng)?shù)穆闊?/p>

那么有沒(méi)有更加完美的實(shí)現(xiàn)方法呢?當(dāng)然有!

Nodejs中,有這么一個(gè)好玩的東西 process.argv,它是一個(gè)數(shù)組,前兩個(gè)值分別是node程序所在位置和當(dāng)前運(yùn)行的文件所在位置。

神奇的是,我們運(yùn)行程序時(shí),所傳的參數(shù)可以通過(guò) process.argv 得到。

比如這樣子 node portIsOccupied.js -p 1987,那么會(huì)將 -p 和 1987 添加到 process.argv 數(shù)組的末尾。

知道了原理,下面我們來(lái)編寫(xiě)更加完美的程序吧。

控制臺(tái)給程序傳參

修改 portIsOccupied(1987) 為:

var port = 80 // 默認(rèn)檢測(cè)80端口
if (process.argv[2] === '-p') {
 port = parseInt(process.argv[3])
}
portIsOccupied(port)

執(zhí)行

其中 [port] 是你想要檢測(cè)的端口。

node portIsOccupied.js -p [port]

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。


文章名稱(chēng):利用Node.js檢測(cè)端口是否被占用的方法
當(dāng)前鏈接:http://weahome.cn/article/pcihci.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部