OS X (BSD) 版 netcat 中有-k
一个选项,可以在当前连接完成后继续监听。然而 Debian (GNU?) 版中没有这个选项。
当 EOF 出现在 stdin 上时,可以-q -1
选择永远监听,但这不起作用,并且连接无论如何都会关闭。
有什么方法可以强制 Debian 的 netcat 无限期地保持监听?
答案1
Debian 的 Netcat 实现确实有这个-k
选项。但是,由于某些未知原因,它不能以可靠的方式工作,因此手册中没有记录它。
幸运的是,有ncat
,这是 Netcat 的另一种实现,也是软件包的一部分nmap
。这个有一个可用的-k
。您可以通过安装来获得它nmap
。ncat
的选项和用法与 Netcat 的其他实现大致相似,因此您对其他实现的了解应该可以很好地转移到ncat
。
答案2
我想,如果 netcat 收到 rst 或 fin 数据包,我也会遇到同样的问题。
只要 netcat 关闭,您就可以使用 bash 循环再次调用它。
while true; do nc -lv <listeningport> ; done
答案3
对我来说不起作用,也使用 UDP 侦听器。-w0 解决了这个问题。while true; do nc -luv 5140 -w0; done