web-dev-qa-db-fra.com

Nodejs ports TCP gratuits libres

Mon projet doit configurer un nouveau port chaque fois qu'une nouvelle instance de ma classe est instanciée. 

Dans Node.js, comment trouver un port libre TCP à définir dans mon nouveau serveur de socket? Ou vérifiez si mon port spécifié est déjà utilisé ou non.

21
Kefka

Vous pouvez vous connecter à un port libre et aléatoire attribué par le système d'exploitation en spécifiant 0 pour le port. De cette manière, vous n'êtes pas soumis aux conditions de concurrence (par exemple, recherchez un port ouvert et une liaison de processus avec celui-ci avant de pouvoir vous y connecter).

Ensuite, vous pouvez obtenir le port attribué en appelant server.address().port .

Exemple:

var net = require('net');

var srv = net.createServer(function(sock) {
  sock.end('Hello world\n');
});
srv.listen(0, function() {
  console.log('Listening on port ' + srv.address().port);
});
41
mscdex

Pour trouver un port TCP ouvert, vous pouvez utiliser le module portastic

Vous pouvez trouver un port comme ceci:

port = require('portastic');

options = {
    min : 8000,
    max : 8005
}

port.find(options, function(err, data){
    if(err)
        throw err;
    console.log(data);
});
1
Kefka

Pour l'application Express:

const app = require('express')();

const server = app.listen(0, () => {
  console.log('Listening on port:', server.address().port);
});
1
Ninh Pham