ホームページ > ウェブフロントエンド > フロントエンドQ&A > Nodejs はポートが占有されているかどうかを判断します

Nodejs はポートが占有されているかどうかを判断します

王林
リリース: 2023-05-24 13:13:07
オリジナル
1801 人が閲覧しました

Node.js は、Web 開発や効率的なネットワーク アプリケーションの構築に広く使用されている、人気のあるサーバーサイド JavaScript ランタイム環境です。 Node.js 開発では、特定のポートが占有されているかどうかを判断する必要があるシナリオによく遭遇します。この記事では、Node.js を使用してポートが占有されているかどうかを判断する方法と、一般的な解決策とベスト プラクティスを紹介します。

1. Node.js の net モジュール

Node.js は、ネットワーク接続を処理し、データを送信するために使用される net と呼ばれるコア モジュールを提供します。 net モジュールには、TCP や UDP のソケット実装など、いくつかの一般的なネットワーク プログラミング コンポーネントが含まれています。 net モジュールを使用して、ポートが占有されているかどうかを判断できます。

次は、net モジュールを使用してポート占有率を決定するサンプル コードです:

const net = require('net');

const port = 3000;
const server = net.createServer();
server.once('error', function (err) {
  if (err.code === 'EADDRINUSE') {
    console.log('Port %d is in use', port);
  }
});

server.listen(port, function () {
  console.log('Server listening on port %d', port);
  server.close();
});
ログイン後にコピー

この例では、TCP サーバーを作成し、ポート 3000 にバインドします。ポートが占有されている場合、エラー イベントがキャプチャされ、コンソールにメッセージが出力されます。それ以外の場合は、サーバーを起動してポートをリッスンし、すぐにサーバーをシャットダウンします。

この方法の欠点は、サーバーを起動する必要があることです。プロセスが特定のポートを占有しているかどうかを確認したいだけの場合、完全なサーバー プロセスが作成されるため、非常にリソースを大量に消費するアプローチになります。

2. Node.js の dgram モジュール

Node.js では、dgram モジュールは UDP データグラムの処理に使用され、ポートが占有されているかどうかの検出にも使用できます。以下は、dgram モジュールを使用したサンプル コードです。

const dgram = require('dgram');
const socket = dgram.createSocket('udp4');

const port = 3000;

socket.on('error', function (err) {
  if (err.code === 'EADDRINUSE') {
    console.log('Port %d is in use', port);
  }
});

socket.bind(port, function () {
  console.log('Port %d is free', port);
  socket.close();
});
ログイン後にコピー

この例では、dgram モジュールを使用して UDP ソケットを作成し、それをポート 3000 にバインドします。ポートが占有されている場合、エラー イベントがキャプチャされ、コンソールにメッセージが出力されます。それ以外の場合は、成功メッセージを出力し、ソケットを閉じます。

3. サードパーティ モジュール: is-port-available

Node.js のコア モジュールに加えて、サードパーティ モジュールが多数存在します。ポートが占有されています。 is-port-available は、Windows、Mac、Linux 上で実行される軽量の Node.js モジュールです。このモジュールを使用すると、複雑なコードを記述することなく、ポートが占有されているかどうかを簡単に検出できます。以下は、is-port-available モジュールを使用したサンプル コードです。

const isPortAvailable = require('is-port-available');
const port = 3000;

isPortAvailable(port).then(function(available) {
  if (available) {
    console.log(`Port ${port} is free`);
  } else {
    console.log(`Port ${port} is in use`);
  }
});
ログイン後にコピー

この例では、is-port-available モジュールを使用して、ポート 3000 が占有されているかどうかを検出し、対応する情報をコンソールに出力します。情報。

4. 概要

Node.js 開発において、ポートが占有されているかどうかを検出することは非常に重要なタスクです。 Node.js のコア モジュール net および dgram を使用してポートを検出する方法と、サードパーティ モジュール is-port-available の使用方法を紹介しました。検出ポートを選択するときは、アプリケーションに最適な方法を選択する必要があります。 net モジュールは、ネットワーク要求を処理するためにサーバーを起動する必要がある場合に最適です。特定のポートが占有されているかどうかを検出したいだけの場合は、dgram または is-port-available の方が適している可能性があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート