Maison  >  Article  >  interface Web  >  Comment détecter si un port est occupé dans Node.js

Comment détecter si un port est occupé dans Node.js

亚连
亚连original
2018-06-22 14:02:291999parcourir

Cet article vous présente principalement les informations pertinentes sur l'utilisation de Node.js pour détecter si le port est occupé. L'article le présente en détail à travers l'exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. j'en ai besoin Apprenons avec l'éditeur ci-dessous.

Préface

Quand j'apprenais TCP/IP, j'ai souvent rencontré des choses liées aux ports lorsque j'écrivais sur certaines choses sur. les choses du réseau, parfois certains ports utilisés sont demandés : Le port est occupé, ah ah, c'est assez déprimant, et puis je ne dirai pas grand-chose ci-dessous, jetons un œil à l'introduction détaillée.

Nodejs détecte si le port est occupé

Lors de l'ouverture d'un service local, il y a une situation : le port actuel est déjà utilisé par un autre project , ce qui entraîne l'échec du démarrage du service.

Ensuite, nous utilisons dix lignes de code simples pour détecter si le port est déjà occupé.

Idée

Pour savoir si le port est occupé, on peut ouvrir un nouveau service et écouter le port s'il est ouvert avec succès. , ce sera Le port n'est pas occupé, sinon le port est déjà utilisé par un autre programme.

Maintenant que nous avons l’idée de base, commençons à écrire du code.

Code de base

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

Exécutez node portIsOccupied.js, et dans des circonstances normales, il affichera Le port 【1987】 est disponible.

Utilisez ssr pour définir le répertoire actuel comme serveur statique À propos de l'utilisation de ssr. , vous pouvez trouver https ici ://github.com/jaywcjlove/ssr,
ssr ouvrira le port 1987 par défaut.

À ce moment, exécutez node portIsOccupied.js à nouveau et affichez Le port 【1987】 est occupé, veuillez changer d'autre port.

Rendre le programme plus parfait

Jusqu'à présent, nous avons pu détecter si le port est occupé.

Cependant, si je veux détecter un autre port, je dois changer le numéro de port du fichier à chaque fois, ce qui est assez gênant.

Alors existe-t-il une méthode de mise en œuvre plus parfaite ? Bien sûr!

Dans Nodejs, il existe une chose tellement amusante, process.argv, qui est un tableau. Les deux premières valeurs sont l'emplacement du programme de nœud et l'emplacement du fichier en cours d'exécution.

La magie est que lorsque nous exécutons le programme, les paramètres transmis peuvent être obtenus via process.argv.

Par exemple, le nœud portIsOccupied.js -p 1987 ajoutera -p et 1987 à la fin du tableau process.argv.

Maintenant que nous connaissons le principe, écrivons un programme plus parfait.

La console transmet les paramètres au programme

Modifier portIsOccupied(1987) en :

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

Exécutez

Où [port] est le port que vous souhaitez détecter.

node portIsOccupied.js -p [port]

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Comment implémenter le chargement dynamique d'histogrammes dans angulairejs

À propos des principes de réactivité dans Vue (tutoriel détaillé)

Comment utiliser js pour convertir entre les formats d'horodatage et de date

Il y a un problème concernant la route par défaut qui ne se charge pas dans vue.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn