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