![关于 nc -l 和 nc -lp 的混淆](https://linux22.com/image/1068905/%E5%85%B3%E4%BA%8E%20nc%20-l%20%E5%92%8C%20nc%20-lp%20%E7%9A%84%E6%B7%B7%E6%B7%86.png)
在的手册页中nc -l
,它说:
It is an error to use this option in conjunction with the -p, -s, or -z options.
但是我在网上看到的使用此命令的大多数示例都使用nc -lp [port]
。
你能在 中使用-p
with吗?而使用 just ,这是正确的用法吗?因为当我在另一个终端上使用 连接到它时,它可以工作。此外,当我使用并使用 连接到它时,它也可以工作。这两个命令之间有什么区别吗?-l
nc
nc -l [port]
nc [ip address] [port]
nc -lp [port]
nc [ip address] [port]
答案1
请注意,有两个 netcat 包。它们提供的命令选项并不相同nc
:
netcat-传统显示此命令作为主要示例之一:
nc -l -p port [-options] [hostname] [port]
尽管netcat-openbsd状态:
-l Listen for an incoming connection rather than initiating a connection to a remote host. The destination and port to listen on can be specified either as non-optional arguments, or with options -s and -p respectively. Cannot be used together with -x or -z. Additionally, any timeouts specified with the -w option are ignored.
所以是的,这两个命令的作用相同,但您可能会遇到不适用于您的 netcat 版本的示例。例如-e
。
答案2
使用监听模式时-l
必须指定端口。例如:
nc -l 3000 # Listen at port 3000 to all network interfaces
nc -l4 3000 # Listen at port 3000 to all IPv4 network interfaces
nc -l6 3000 # Listen at port 3000 to all IPv6 network interfaces
因此实际上您不需要额外的选项,例如-p
指示nc
命令在哪个端口上进行监听。使用-lp
选项的示例可能基于旧版本,nc
或者作者没有像您一样阅读手册 :) 也可能在-lp
使用组合时-p
省略选项。
此外,下面是如何创建一个监听服务,基于nc
:如何从命令行监听新端口 Ubuntu Server?