最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js檢測端口(port)是否被占用的簡單示例

 更新時間:2016年09月29日 10:11:24   作者:小弟調(diào)調(diào)™  
大家有沒有遇到過在開啟本地服務(wù)時,有這么一種情況:當前端口已經(jīng)被另一個項目使用了,導致服務(wù)開啟失敗。那么接下來,我們通過簡簡單單的示例代碼來檢測端口是否已經(jīng)被占用。有需要的朋友們可以參考借鑒。

前言

在網(wǎng)絡(luò)技術(shù)中,端口(Port)大致有兩種意思:一是物理意義上的端口,比如,ADSL Modem、集線器、交換機、路由器用于連接其他網(wǎng)絡(luò)設(shè)備的接口,如RJ-45端口、SC端口等等。二是邏輯意義上的端口,一般是指TCP/IP協(xié)議中的 端口,端口號的范圍從0到65535,比如用于瀏覽網(wǎng)頁服務(wù)。這篇文章的目的是為了解決ssr工具起多個服務(wù)的時候端口被占用的情況,下面跟大家分享研究的代碼片段,有需要的可以參考借鑒。

示例代碼

// 檢測port是否被占用
function probe(port, callback) {

  var server = net.createServer().listen(port)

  var calledOnce = false

  var timeoutRef = setTimeout(function () {
    calledOnce = true
    callback(false,port)
  }, 2000)

  timeoutRef.unref()

  var connected = 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)

    var result = true
    if (err.code === 'EADDRINUSE')
      result = false

    if (!calledOnce) {
      calledOnce = true
      callback(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("\n Static file server running at" + "\n\n=> http://localhost:" + _pt + '\n');
    }else{
      server(_pt+1)
    }
  })
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望能對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • npm安裝報錯npm ERR! Error: EPERM: operation not permitted解決

    npm安裝報錯npm ERR! Error: EPERM: operation&

    這篇文章主要為大家介紹了npm安裝報錯npm ERR! Error: EPERM: operation not permitted解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • NodeJS感知和控制自身進程的運行環(huán)境和狀態(tài)

    NodeJS感知和控制自身進程的運行環(huán)境和狀態(tài)

    NodeJS可以感知和控制自身進程的運行環(huán)境和狀態(tài),也可以創(chuàng)建子進程并與其協(xié)同工作,這使得NodeJS可以把多個程序組合在一起共同完成某項工作,并在其中充當膠水和調(diào)度器的作用,和進程管理相關(guān)的API單獨介紹起來比較枯燥,這里從一些典型的應(yīng)用場景出發(fā)
    2024-01-01
  • nodejs mysql 實現(xiàn)分頁的方法

    nodejs mysql 實現(xiàn)分頁的方法

    本篇文章主要介紹了nodejs mysql 實現(xiàn)分頁的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • node.js爬取中關(guān)村的在線電瓶車信息

    node.js爬取中關(guān)村的在線電瓶車信息

    這篇文章主要給大家介紹了關(guān)于利用node.js如何爬取中關(guān)村的在線電瓶車信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用node.js具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 詳解Node.js中的事件機制

    詳解Node.js中的事件機制

    Node.js能夠在眾多的后端JavaScript技術(shù)之中脫穎而出,正是因其基于事件的特點而受到歡迎,所以這篇文章小編給大家詳細介紹了Node.js中的事件機制,本文介紹的很詳細,對大家的理解和學習很有幫助,下面來一起看看吧。
    2016-09-09
  • Nodejs+express+html5 實現(xiàn)拖拽上傳

    Nodejs+express+html5 實現(xiàn)拖拽上傳

    文件上傳是一個比較常見的功能,傳統(tǒng)的選擇方式的上傳比較麻煩,需要先點擊上傳按鈕,然后再找到文件的路徑,然后上傳。給用戶體驗帶來很大問題。html5開始支持拖拽上傳的需要的api。nodejs也是一個最近越來越流行的技術(shù),這也是自己第一次接觸nodejs。
    2014-08-08
  • Nodejs處理異常操作示例

    Nodejs處理異常操作示例

    這篇文章主要介紹了Nodejs處理異常操作,結(jié)合實例形式分析了nodejs針對異常的捕獲與處理相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Node.js實現(xiàn)發(fā)送郵件功能

    Node.js實現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細介紹了Node.js實現(xiàn)發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Node.js中Sequelize?hook的使用方法小結(jié)

    Node.js中Sequelize?hook的使用方法小結(jié)

    Sequelize?提供了多個?hook,用于在執(zhí)行數(shù)據(jù)庫操作時執(zhí)行一些自定義邏輯,本文為大家整理了一些常用的?Sequelize?hook?列表及其作用,希望對大家有所幫助
    2024-02-02
  • nodejs關(guān)于中間件解析

    nodejs關(guān)于中間件解析

    這篇文章主要介紹了nodejs關(guān)于中間件解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

嘉禾县| 道孚县| 同江市| 通州区| 新丰县| 东莞市| 佳木斯市| 乌鲁木齐县| 锡林郭勒盟| 汉中市| 崇阳县| 萨嘎县| 盖州市| 松溪县| 德阳市| 宣威市| 仁怀市| 名山县| 犍为县| 广南县| 云阳县| 忻城县| 丹江口市| 甘孜县| 纳雍县| 桂东县| 蓬莱市| 佳木斯市| 阿城市| 柳林县| 乳源| 盈江县| 来凤县| 沛县| 图木舒克市| 肇庆市| 盘山县| 神木县| 闽清县| 石林| 沂源县|