Sie verwenden das falsche Werkzeug für die Aufgabe: Verwenden Sie etwas wie ucspi-tcp, insbesondere tcpserver :
tcpserver waits for incoming connections and, for each connection, runs a program of your choice.
Ich benutze netcat, um einen einfachen Server wie diesen auszuführen:
while true; do nc -l -p 2468 -e ./my_exe; done
Auf diese Weise kann sich jeder an Port 2468 mit meinem Host verbinden und mit "my_exe" sprechen.
Wenn ein anderer Benutzer während einer offenen Sitzung eine Verbindung herstellen möchte, wird leider der Fehler "Verbindung abgelehnt" angezeigt, da netcat bis zur nächsten "while" -Schleife nicht mehr lauscht.
Gibt es eine Möglichkeit, dass sich netcat wie ein Multithread-Server verhält, dh immer auf eingehende Verbindungen wartet? Wenn nicht, gibt es einige Problemumgehungen?
Obwohl Sie das von Ihnen verwendete Betriebssystem nicht erwähnt haben, gehe ich davon aus, dass es sich um Linux oder Unix handelt, die auf der Syntax Ihres Shellbefehlsbeispiels basieren.
Wenn auf Ihrem System xinetd (oder sein Vorgänger inetd ) ausgeführt wird, können Sie diese Software verwenden, um eine Verbindung an einem Port Ihrer Wahl zu überwachen und eine ausführbare Datei auszuführen, um zu antworten. Mit xinetd / inetd haben Sie die Möglichkeit, mehrere gleichzeitige Verbindungen zuzulassen, die jeweils von einer separaten Instanz Ihrer ausführbaren Datei bedient werden.
Sie könnten den Prozess wahrscheinlich nur im Hintergrund abfangen (dann wartet er nicht auf eine Rückkehr, bevor Sie zur nächsten Schleife wechseln), mit einem "&" wie:
while true; do nc -l -p 2468 -e ./my_exe &; done