ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js でポートが占有されているかどうかを検出する方法

Node.js でポートが占有されているかどうかを検出する方法

亚连
亚连オリジナル
2018-06-22 14:02:291950ブラウズ

この記事では、Node.js を使用してポートが占有されているかどうかを検出することに関する関連情報を、サンプル コードを通じて詳細に紹介します。これは、学習や仕事に必要なすべての人の参考になります。以下で読むことができます。編集者と一緒に学びましょう。

前書き

tcp/ip を学習していると、ネットワーク上で何かを書いているときに、使用中のいくつかのポートがプロンプトで表示されることがあります。とても憂鬱で、それを理解したいと思ったのですが、これ以上は言いません。詳細な紹介を見てみましょう。

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)

Test

node portIsOccupied.jsを実行すると、通常であれば出力されます ポート【1987】が利用可能です。 node portIsOccupied.js,正常情况下会输出 The port【1987】 is available.

使用ssr将当前目录设置成静态服务器,关于ssr的使用可以在这里找到 https://github.com/jaywcjlove/ssr,
ssr默认会开启 1987 端口。

这时,再次执行 node portIsOccupied.js

ssr を使用して現在のディレクトリを静的サーバーとして設定します。 ssr の使用については、https://github.com/jaywcjlove/ssr を参照してください。
Ssr はデフォルトでポート 1987 を開きます。

このとき、もう一度 node portIsOccupied.js を実行して、The port【1987】 isoccupied,please change other port.を出力します。

プログラムをより完璧にしてください

以上です。ポートが占有されているかどうかはすでに検出できています。

しかし、別のポートを検出したい場合は、毎回ファイルのポート番号を変更する必要があり、かなり面倒です。

では、それを達成するためのより完璧な方法はあるのでしょうか?もちろん!

Nodejs には、配列である process.argv という楽しいものがあります。最初の 2 つの値は、ノード プログラムの場所と現在実行中のファイルの場所です。

その魔法は、プログラムを実行すると、渡されたパラメーターが process.argv を通じて取得できるということです。

たとえば、ノード portIsOccupied.js -p 1987 の場合、-p と 1987 が process.argv 配列の末尾に追加されます。

原理がわかったので、より完璧なプログラムを書いてみましょう。

コンソールはプログラムにパラメータを渡します

portIsOccupied(1987)を次のように変更します:

var port = 80 // 默认检测80端口
if (process.argv[2] === '-p') {
 port = parseInt(process.argv[3])
}
portIsOccupied(port)

Execute

ここで、[port]は検出したいポートです。

rreee

以上が皆さんのためにまとめたもので、今後皆さんのお役に立てれば幸いです。

関連記事:

angularjsで棒グラフの動的読み込みを実装する方法

Vueのレスポンシブ原則について(詳細なチュートリアル)

jsを使用してタイムスタンプと日付形式を変換する方法

🎜 vue.jsでデフォルトルートが読み込まれない問題🎜🎜

以上がNode.js でポートが占有されているかどうかを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。