欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年12月07日 09:55:24   作者:ansenhuang  
這篇文章主要給大家介紹了關(guān)于利用Node.js檢測(cè)端口是否被占用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

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

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

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

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

思路

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

基本思路有了,下面我們開始編寫代碼。

基礎(chǔ)代碼

portIsOccupied.js

var net = require('net')

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

 server.on('listening', function () { // 執(zhí)行這塊代碼說明端口未被占用
 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ì)開啟 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ù)穆闊?br />

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

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

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

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

知道了原理,下面我們來編寫更加完美的程序吧。

控制臺(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à)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Node8中AsyncHooks異步生命周期

    Node8中AsyncHooks異步生命周期

    這篇文章主要介紹了Node8中AsyncHooks異步生命周期,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本

    Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本

    ubuntu默認(rèn)安裝的nodejs版本比較老,要安裝到最新的,下面這篇文章主要給大家介紹了關(guān)于Ubuntu22.04系統(tǒng)下升級(jí)nodejs到v18版本的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 淺析node命令行交互原理

    淺析node命令行交互原理

    當(dāng)我們使用腳手架去創(chuàng)建一個(gè)項(xiàng)目的時(shí)候,通常會(huì)通過命令行交互來獲取一些信息,比如填項(xiàng)目名稱,選擇項(xiàng)目模板,選擇版本,我們雖然經(jīng)常用到,但是想必對(duì)于其中的原理還是不太了解,本文將待大家詳細(xì)介紹一下node命令行的交互原理,需要的朋友可以參考下
    2023-05-05
  • nodejs利用http模塊實(shí)現(xiàn)銀行卡所屬銀行查詢和騷擾電話驗(yàn)證示例

    nodejs利用http模塊實(shí)現(xiàn)銀行卡所屬銀行查詢和騷擾電話驗(yàn)證示例

    本篇文章主要介紹了nodejs利用http模塊實(shí)現(xiàn)銀行卡所屬銀行查詢和騷擾電話驗(yàn)證示例,有興趣的可以了解一下。
    2016-12-12
  • 詳解Node.js amqplib 連接 Rabbit MQ最佳實(shí)踐

    詳解Node.js amqplib 連接 Rabbit MQ最佳實(shí)踐

    這篇文章主要介紹了詳解Node.js amqplib 連接 Rabbit MQ最佳實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用Node.js實(shí)現(xiàn)獲取視頻詳情

    使用Node.js實(shí)現(xiàn)獲取視頻詳情

    這篇文章主要為大家詳細(xì)介紹了如何在Node.js應(yīng)用程序中實(shí)現(xiàn)獲取視頻詳情的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • 從一個(gè)爬蟲開始ChatGPT的編程秀

    從一個(gè)爬蟲開始ChatGPT的編程秀

    這篇文章主要為大家介紹了從一個(gè)爬蟲開始ChatGPT的編程秀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 命令行批量截圖Node腳本示例代碼

    命令行批量截圖Node腳本示例代碼

    這篇文章主要給大家介紹了關(guān)于命令行批量截圖Node腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作示例

    node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作示例

    這篇文章主要介紹了node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作,結(jié)合實(shí)例形式詳細(xì)分析了node.js基于zlib模塊創(chuàng)建數(shù)據(jù)流以及壓縮和解壓縮等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 如何刪除node_modules重新安裝的方法步驟

    如何刪除node_modules重新安裝的方法步驟

    我們?cè)陂_發(fā)項(xiàng)目的時(shí)候,每次安裝的 node 包會(huì)出現(xiàn)版本和項(xiàng)目所需要的版本不一致的問題,那么如何刪除node_modules重新安裝,本文就詳細(xì)的介紹一下
    2021-09-09

最新評(píng)論