如何使用 BusyBox 下的 NC 命令等待套接字入站端的响应?

如何使用 BusyBox 下的 NC 命令等待套接字入站端的响应?

我在使用 BusyBox 1.1.3 附带的 Netcat 发出 HTTP 请求并接收响应时遇到了问题。NC 命令似乎在到达我发送的请求文件的末尾时就退出了。-w 选项似乎是为这种情况设计的,但查看源代码,-w 选项似乎不可能对接收行为产生任何影响。

BusyBox 上此版本 NC 的源代码在这里...

http://git.busybox.net/busybox/tree/networking/nc.c?id=5cbe2519d8776bc15e0bc4dc7aeb6adc53e50b81

我做错了什么?有没有办法通过此版本的 NC 将文件发送到服务器,然后等待接收响应?有没有其他可行的方法可以在脚本中执行此操作?

请注意,这是一个嵌入式系统,我无法升级 BusyBox 版本或上传新的​​可执行文件 - 我只能使用脚本文件和现有的 BusyBox 可执行文件。另请注意,系统上没有可用的 WGET。

谢谢!

—乔希

答案1

尝试这个:

(echo "GET / HTTP/1.0"; sleep 1) | nc HOST 80

答案2

你确定你对 nc 没有感到困惑吗?BusyBox 手册页状态:

nc
nc [OPTIONS] HOST PORT - connect nc [OPTIONS] -l -p PORT [HOST] [PORT] - listen

Options:

    -e PROG         Run PROG after connect (must be last)
    -l              Listen mode, for inbound connects
    -n              Don't do DNS resolution
    -s ADDR         Local address
    -p PORT         Local port
    -u              UDP mode
    -v              Verbose
    -w SEC          Timeout for connects and final net reads
    -i SEC          Delay interval for lines sent
    -o FILE         Hex dump traffic
    -z              Zero-I/O mode (scanning)

因此看起来在港口是(传统的)-l, 尽管-w是连接和最终网络读取的超时时间。

如果你的问题是即使在连接关闭后仍继续监听,你可以使用永久循环,而真正的 nc -l ...

编辑:

读完这些消息后,我意识到我不明白原帖者在问什么。我不明白的原因是你不能使用数控例如两个都发送接收。您需要一个单独的端口和一个单独的实例数控为那个。保持一个品脱是没有品脱的发送实例数控打开,如果您无法在同一端口接收。

相关内容