Cómo detectar si un puerto está ocupado en Node.js
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 p>
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