Você faz isso com a opção -k
para nc
.
-k Forces nc to stay listening for another connection after its cur- rent connection is completed. It is an error to use this option without the -l option. When used together with the -u option, the server socket is not connected and it can receive UDP data- grams from multiple hosts.
Exemplo:
$ rm -f /tmp/socket # unlink the socket if it already exists
$ nc -vklU /tmp/socket # the server
Connection from mack received!
yes
Connection from mack received!
yes
...
É recomendado para unlink()
o socket após o uso - mas, na verdade, a maioria dos programas verifica se ele existe e o remove antes de chamar bind()
nele; se o caminho do soquete existir no sistema de arquivos e você tentar bind()
, você receberá um erro EADDRINUSE
mesmo quando nenhum programa estiver usando-o de alguma forma.
Uma forma de evitar toda essa bagunça no linux é usar " abstract ", mas eles não parecem ser suportados por netcat
.