Red de conocimiento informático - Material del sitio web - Cómo detectar si un puerto está ocupado en Node.js

Cómo detectar si un puerto está ocupado en Node.js

Este artículo le presenta información relevante sobre cómo usar Node.js para detectar si el puerto está ocupado. El artículo lo presenta en detalle a través del código de ejemplo. Tiene cierta referencia y valor de aprendizaje para que todos estudien o trabajen. Si lo necesita, puede seguir al editor a continuación. Levántese y estudie.

Prólogo

Cuando aprendo TCP/IP, a menudo encuentro cosas relacionadas con los puertos. Cuando escribo algo sobre la red, a veces hablo sobre algunos puertos. Ocupado, ahhhhh, fue bastante deprimente, pero después de pensarlo más tarde, finalmente lo descubrí, no entraré en más detalles a continuación.

Nodejs detecta si el puerto está ocupado

Al abrir un servicio local puede surgir una situación: el puerto actual ya está siendo utilizado por otro proyecto, provocando que el servicio no se abra.

A continuación, usemos diez líneas simples de código para detectar si el puerto está ocupado.

Pensando

Para detectar si el puerto está ocupado, podemos abrir un nuevo servicio y escuchar el puerto. Si el servicio se abre con éxito, significa que el puerto no está ocupado. De lo contrario, significa que el puerto no está ocupado ya por otros programas.

Con los conceptos básicos en mente, comencemos a escribir código.

Código básico

portIsOccupied.js

var net = require('net')

//Detectar si el puerto está ocupado

función portIsOccupied (puerto) {

// Crea un servicio y escucha el puerto

var server = net.createServer().on('error ', function (err) {

if (err. code === 'EADDRINUSE') { // El puerto ya está en uso

console.log('El puerto' + puerto + 'está ocupado, cambie otro puerto.')

}

})

}

/ / Ejecutar

prueba portIsOccupied(1987)

Ejecutar el nodo portIsOccupied.

Utilice ssr para configurar el directorio actual como un servidor estático. Puede encontrar / sobre ssr. jaywcjlove/ssr aquí,

ssr habilitará el puerto 1987 de forma predeterminada.

En este punto, ejecute el nodo portIsOccupied.js nuevamente y genere El puerto 1987 está ocupado, cambie otro puerto.

Haga que el programa sea más perfecto

Eso es todo. , hemos podido detectar si el puerto está ocupado.

Sin embargo, si quiero detectar otro puerto, tengo que cambiar el número de puerto del archivo cada vez, lo cual es bastante problemático.

Entonces, ¿hay una manera mejor? ¡Por supuesto!

En Nodejs, hay algo interesante llamado Process.argv, que es una matriz cuyos dos primeros valores son la ubicación del programa del nodo y la ubicación del archivo que se está ejecutando actualmente.

Lo sorprendente es que cuando ejecutamos el programa, los argumentos que pasamos se pueden obtener de Process.argv.

Por ejemplo, este nodo portIsOccupied.js -p 1987 agrega -p y 1987 al final de la matriz Process.argv.

Ahora que sabes cómo funciona, escribamos un programa mejor.

Parametrización de consola del programa

Modificar portIsOccupied(1987) a:

var port = 80 // Puerto de detección predeterminado 80

if (proceso.argv[2] === '-p') {

puerto = parseInt( proceso.argv[3])

}

portIsOccupied(puerto) Ejecutar

Donde [puerto] es el puerto que desea detectar.

node portIsOccupied.js -p [puerto] Lo anterior es lo que he compilado para usted. Espero que le resulte útil.

Artículos relacionados:

Cómo implementar la carga dinámica de gráficos de barras en angularjs

Acerca de los principios responsivos en Vue (tutorial detallado)

Cómo usar js para convertir entre marca de tiempo y formato de fecha

Acerca de la ruta predeterminada no cargada en vue.js