Il s'agit d'un simple serveur d'écho sous Unix, utilisant nc:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(basé sur cela )
Comme je peux le voir, le flux de données fonctionne comme suit:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
Et voici la question: pourquoi ça ne marche pas?
nc -k -l 4458 -v >fifo <fifo
Vous remarquerez que si vous essayez de le telnet
faire localhost
, 4458
vous obtiendrez une erreur "Connexion refusée".
cat myfifo | nc -k -l 4458 > myfifo
fonctionne également. Si vous utilisez un fichier texte, file.txt comme cecinc -k -l 4458 < file.txt > file.txt
La première connexion se connectera et se fermera (est logique parce que l'entrée a été tronquée et EOF ferme le socket), la deuxième connexion deviendra un serveur d'écho oublieux: il fera écho toutes les deux lignes et enregistrez les lignes sans écho dans le fichier texte.