netcat como um servidor multithread

10

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?

    
por etuardu 13.01.2011 / 16:04

3 respostas

16

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.
    
por 13.01.2011 / 16:08
3

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.

    
por 13.01.2011 / 16:19
-2

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
    
por 30.05.2012 / 22:08