如何强制 netcat 立即发送我的输入,而不仅仅是换行?

the*_*ejh 40 linux netcat

如何强制 netcat 立即发送我的输入,而不仅仅是换行?我想手动测试一个 HTTP 解析器,并检查它在标题行分布在多个数据包中时的行为。

use*_*686 49

使用“eof”键,CtrlD。当在一行中间按下时,它将把当时输入的所有内容提供给 netcat。

缓冲实际上是由 tty 层完成的,根本没有处理ncstty -icanon && nc ...将禁用缓冲并允许nc在数据输入终端时查看数据,此时它将立即发送。(请注意,sttync命令必须一起运行,否则 shell 本身可能会在显示其提示时重新启用它。)

  • @FinalContest:缓冲由 tty 层完成。`stty -icanon && nc ...` 或 `stty raw && nc ...` 将禁用它。[注意必须一起运行,否则shell自己在显示提示时会重新启用它。] (6认同)
  • @FinalContest:是的,`raw` 改变了一大堆 tty 选项,其中一个是在 tty 级别处理特殊的“控制”键。(它实际上是一种“原始”模式,因为它将_一切_传递给程序。)您可以使用另一个 tty 中的 `stty -a -F /dev/pts/XX` 来查看当前参数。 (2认同)
  • 我正在使用 `stty -icanon -echo && nc ...` 否则我在 nc 中输入的每个字符都会回显两次 (2认同)