J'utilise netcat pour exécuter un serveur simple comme celui-ci:
while true; do nc -l -p 2468 -e ./my_exe; done
De cette façon, n'importe qui peut se connecter à mon hôte sur le port 2468 et parler avec "my_exe".
Malheureusement, si quelqu'un d'autre veut se connecter pendant une session ouverte, il obtiendrait une erreur "Connexion refusée", car netcat n'est plus en écoute jusqu'à la prochaine boucle "while".
Existe-t-il un moyen de faire en sorte que netcat se comporte comme un serveur multi-thread, c'est-à-dire toujours à l'écoute des connexions entrantes? Sinon, existe-t-il des solutions à cela?
netcat
parallel-processing
etuardu
la source
la source
Réponses:
vous utilisez le mauvais outil pour la tâche: utilisez quelque chose comme ucspi-tcp , en particulier tcpserver :
la source
Bien que vous n'ayez pas mentionné le système d'exploitation que vous utilisez, je suppose que c'est Linux ou Unix basé sur la syntaxe de votre exemple de commande shell.
Si votre système exécute xinetd (ou son prédécesseur inetd ), vous pouvez utiliser ce logiciel pour écouter une connexion sur le port de votre choix et exécuter un exécutable pour répondre. Avec xinetd / inetd, vous avez la possibilité d'autoriser plusieurs connexions simultanées, chacune desservie par une instance distincte de votre exécutable.
la source
vous pouvez probablement simplement mettre le processus en arrière-plan (il n'attend pas de retour avant de passer à la boucle suivante) avec un '&' tel que:
la source