![netcat 的版本](https://linux22.com/image/1275848/netcat%20%E7%9A%84%E7%89%88%E6%9C%AC.png)
我尝试过 netcat 的两个主要版本:GNU 和 BSD。(我的是 BSD 版本)。
在 GNU 版本中,命令 $ nc -l -p 12345 可以正常工作,但在 BSD 中,选项 -l(监听)不能与 -p(本地端口)结合使用。
我不明白为什么这两个版本之间会有如此大的差异?在 BSD 版本中,当我使用选项 -p 时,它会自动调用 -l (listen)?
谢谢 ;-)
附言:https://bugs.launchpad.net/ubuntu/+source/netcat-openbsd/+bug/590925/comments/3 -p 两者有所不同。OpenBSD 版本使用它来设置远程连接的源端口,而传统的 nc 使用它来指定在监听模式下要监听的本地端口。
答案1
在 BSD 版本中,-l 会占用要监听的端口,因此根本不需要 -p。我不确定 -p 没有 -l 会做什么。我不知道为什么会有区别。– icktoofay <-- 解决方案的功劳归于那个人……但我不认为他在 SU 上有账户,只是 SO。