Questo è un semplice server echo in Unix, usando nc:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(basato su questo )
Come posso vedere, il flusso di dati funziona come segue:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
Ed ecco la domanda: perché non funziona?
nc -k -l 4458 -v >fifo <fifo
Si noterà che se si tenta di telnet
per localhost
il 4458
si otterrà un "Connessione rifiutata" errore.
cat myfifo | nc -k -l 4458 > myfifo
funziona anche. Se si utilizza un file di testo, file.txt in questo modonc -k -l 4458 < file.txt > file.txt
La prima connessione si connetterà e si chiuderà (ha senso perché l'input è stato troncato e EOF chiude il socket), la seconda connessione diventerà un server di eco smemorato: farà eco ogni altra riga e salva le righe non copiate nel file di testo.