Comment puis-je forcer netcat à envoyer mes contributions immédiatement, pas seulement sur les nouvelles lignes?

35

Comment puis-je forcer netcat à envoyer mes contributions immédiatement, pas seulement sur les nouvelles lignes? Je veux tester un analyseur HTTP manuellement et vérifier comment il se comporte lorsque les lignes d'en-tête sont réparties sur plusieurs paquets.

thejh
la source
2
essayez socatcomme indiqué dans cette réponse
Jeremy W

Réponses:

42

Utilisez la touche « EOF », CtrlD. Lorsqu'il est enfoncé au milieu d'une ligne, il donnera à netcat tout ce qui a été entré à ce point.

La mise en mémoire tampon est en fait effectuée par la couche tty et n'est pas gérée ncdu tout. stty -icanon && nc ...désactiverait la mise en mémoire tampon et permettrait ncde voir les données lorsqu'elles sont entrées dans le terminal, auquel cas elles seront envoyées immédiatement. (Notez que les commandes sttyet ncdoivent être exécutées ensemble, sinon le shell lui-même le réactiverait probablement lors de l'affichage de son invite.)

grawity
la source
+1, mais n'y a-t-il pas d'option pour ouvrir netcat de manière à ne rien mettre en mémoire tampon?
lpapp
5
@FinalContest: la mise en mémoire tampon est effectuée par la couche tty. stty -icanon && nc ...ou stty raw && nc ...le désactiverait. [Notez qu'il doit être exécuté ensemble, sinon le shell lui-même le réactiverait lors de l'affichage de l'invite.]
grawity
@grawity: génial, le premier fonctionne bien, mais le second est bloqué ... ctrl-c ne fonctionne plus pour quitter la session, et je ne peux pas non plus faire fonctionner ctrl-z. Est-ce attendu? Veuillez également mettre à jour votre réponse afin que nous puissions nettoyer les commentaires.
lpapp
2
@FinalContest: Oui, rawchange tout un tas d'options tty, l'une d'entre elles étant la gestion des touches spéciales de "contrôle" au niveau tty. (C'est vraiment un mode "brut", en ce sens qu'il passe tout au programme.) Vous pouvez utiliser à stty -a -F /dev/pts/XXpartir d'un autre tty pour voir les paramètres actuels.
grawity
J'utilise stty -icanon -echo && nc ...sinon tous les caractères que j'ai tapés nc sont répétés deux fois
Gelin Luo