Este é um servidor de eco simples no Unix, usando nc:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(com base nisso )
Como posso ver, o fluxo de dados funciona da seguinte maneira:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
E aqui está a pergunta: por que isso não funciona?
nc -k -l 4458 -v >fifo <fifo
Você vai notar que se você tentar telnet
para localhost
em 4458
que você vai ter um "Conexão recusada" erro.
cat myfifo | nc -k -l 4458 > myfifo
também funciona. Se você usar um arquivo de texto, file.txt assim:nc -k -l 4458 < file.txt > file.txt
A primeira conexão será conectada e fechada (faz sentido porque a entrada foi truncada e o EOF fecha o soquete), a segunda conexão se tornará um servidor de eco esquecido: ecoará em todas as outras linhas e salve as linhas não especificadas no arquivo de texto.