Nodejs検出ポートが占有されていますか?
2045 ワード
2016-04-11
Nodejs検出ポートが占有されていますか?
ローカルサービスをオープンした時、現在のポートはもう他の項目に使われました.サービスのオープンに失敗しました.次に、ポートが占有されているかどうかを簡単な10行コードで検出します.
考え方
ポートが占有されているかどうかを知りたいです.新しいサービスを開いて、ポートを待ち受けてもいいです.成功すれば、ポートが占有されていないということです.逆に、ポートは他のプログラムによって使われています.基本的な考え方ができました.コードの作成を始めます.
ベースコード
ssrを使って現在のディレクトリを静的サーバに設定します.ssrの使用についてはここで見つけられます.https://github.com/jaywcjlove/ssrssrはデフォルトで
このとき、再度
プログラムをより完璧にする
ここまで、ポートが占有されているかどうかを検出することができました.しかし、もし私が他のポートを検出したいなら、毎回ファイルのポート番号を変更しなければならないので、かなり面倒です.もっと完璧な実現方法がありますか?もちろんあります
Nodejsには、
コンソールからプログラムへの参照
修正
私のブログ
私のブログでこの文章、住所をご覧ください.http://ansenhuang.github.io/
Nodejs検出ポートが占有されていますか?
ローカルサービスをオープンした時、現在のポートはもう他の項目に使われました.サービスのオープンに失敗しました.次に、ポートが占有されているかどうかを簡単な10行コードで検出します.
考え方
ポートが占有されているかどうかを知りたいです.新しいサービスを開いて、ポートを待ち受けてもいいです.成功すれば、ポートが占有されていないということです.逆に、ポートは他のプログラムによって使われています.基本的な考え方ができました.コードの作成を始めます.
ベースコード
portIsOccupied.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/ssrssrはデフォルトで
1987
ポートを開きます.このとき、再度
node portIsOccupied.js
を実行し、The port【1987】 is occupied, please change other port.
を出力する.プログラムをより完璧にする
ここまで、ポートが占有されているかどうかを検出することができました.しかし、もし私が他のポートを検出したいなら、毎回ファイルのポート番号を変更しなければならないので、かなり面倒です.もっと完璧な実現方法がありますか?もちろんあります
Nodejsには、
process.argv
という面白いものがあります.前の2つの値はそれぞれnodeプログラムの位置と現在実行されているファイルの位置です.不思議なことに、私達がプログラムを実行する時に、伝えられたパラメータはprocess.argv
を通して得られます.このようなnode portIsOccupied.js -p 1987
であれば、process.argv
配列の末尾に−pおよび1987が追加される.原理が分かりました.もっと完璧なプログラムを作りましょう.コンソールからプログラムへの参照
修正
portIsOccupied(1987)
は、var port = 80 // 80
if (process.argv[2] === '-p') {
port = parseInt(process.argv[3])
}
portIsOccupied(port)
実行node portIsOccupied.js -p [port]
その中の[port]はあなたが検出したいポートです.私のブログ
私のブログでこの文章、住所をご覧ください.http://ansenhuang.github.io/