ノード.jsを利用してポートが占有されているかどうかを検出する方法。


前言
tcp/ipを勉強している時、ポートに関するものがよくあります。ネットに書いているものについて、時々使っているポートがあります。ポートが占有されています。ああ、うっとうしいです。そして、それを理解しようと思っています。
Nodejs検出ポートが占有されていますか?
ローカルサービスをオープンした時、現在のポートはもう他の項目に使われました。サービスのオープンに失敗しました。
次に、ポートが占有されているかどうかを簡単な10行コードで検出します。
考え方
ポートが占有されているかどうかを知りたいです。新しいサービスを開いて、ポートを待ち受けてもいいです。成功すれば、ポートが占有されていないということです。逆に、ポートは他のプログラムによって使われています。
基本的な考え方ができました。コードの作成を始めます。
ベースコード
portIs Ocuplied.js

var net = require('net')

//          
function portIsOccupied (port) {
 //           
 var server = net.createServer().listen(port)

 server.on('listening', function () { //               
 server.close() //     
 console.log('The port【' + port + '】 is available.') //        
 })

 server.on('error', function (err) {
 if (err.code === 'EADDRINUSE') { //        
  console.log('The port【' + port + '】 is occupied, please change other port.')
 }
 })
}

//   
portIsOccupied(1987)
テストnode portIsOccupied.jsを実行すると、通常はThe port【1987】is availableが出力されます。
ssrを使用して現在のディレクトリを静的サーバに設定し、ssrの使用に関してはここでhttps://github.com/jaywcjlove/ssrを見つけることができます。
ssrはデフォルトで1987ポートを開きます。
この時、再度node portIsOccupied.jsを実行して、The port【1987】is occupiedを出力して、please change other port.
プログラムをより完璧にする
ここまで、ポートが占有されているかどうかを検出することができました。
しかし、もし私が他のポートを検出したいなら、毎回ファイルのポート番号を変更しなければならないので、かなり面倒です。
もっと完璧な実現方法がありますか?もちろんあります
Nodejsには、このような面白いものがあります。プロcess.argvは配列で、前の二つの値はそれぞれnodeプログラムの位置と現在実行されているファイルの位置です。
不思議なことに、私たちがプログラムを実行する時に、伝えられたパラメータはprocess.argvで得られます。
例えば、このようなnode portIs Occapeied.js-p 1987は、process.argv配列の最後に-pと1987を追加します。
原理が分かりました。もっと完璧なプログラムを作りましょう。
コンソールからプログラムへの参照
portIs Occapeiedを修正する(1987)は、

var port = 80 //     80  
if (process.argv[2] === '-p') {
 port = parseInt(process.argv[3])
}
portIsOccupied(port)
実行
その中の[port]はあなたが検出したいポートです。

node portIsOccupied.js -p [port]
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。