você está usando a ferramenta errada para a tarefa: use algo como ucspi-tcp , especialmente tcpserver :
tcpserver waits for incoming connections and, for each connection,
runs a program of your choice.
Eu uso o netcat para executar um servidor simples como este:
while true; do nc -l -p 2468 -e ./my_exe; done
Dessa forma, qualquer um pode se conectar ao meu host na porta 2468 e conversar com "my_exe".
Infelizmente, se alguém quiser se conectar durante uma sessão aberta, ele receberá um erro "Conexão recusada", porque o netcat não está mais em escuta até o próximo loop "while".
Existe uma maneira de fazer o netcat se comportar como um servidor multi-threaded, ou seja, sempre em escutar conexões de entrada? Se não, há algumas soluções para isso?
Embora você não tenha mencionado o sistema operacional que está usando, presumo que seja Linux ou Unix com base na sintaxe do seu exemplo de comando shell.
Se o seu sistema estiver executando o xinetd (ou seu predecessor inetd ), você pode usar esse software para escutar uma conexão na porta de sua escolha e executar um executável para responder. Com o xinetd / inetd, você tem a opção de permitir múltiplas conexões simultâneas, cada uma servida por uma instância separada do seu executável.
você poderia apenas fazer o segundo plano do processo (depois, ele não espera por um retorno antes de passar para o próximo loop) com um '&' como:
while true; do nc -l -p 2468 -e ./my_exe &; done