关于 nc -l 和 nc -lp 的混淆

关于 nc -l 和 nc -lp 的混淆

在的手册页中nc -l,它说:

It is an error to use this option in conjunction with the -p, -s, or -z options.

但是我在网上看到的使用此命令的大多数示例都使用nc -lp [port]

你能在 中使用-pwith吗?而使用 just ,这是正确的用法吗?因为当我在另一个终端上使用 连接到它时,它可以工作。此外,当我使用并使用 连接到它时,它也可以工作。这两个命令之间有什么区别吗?-lncnc -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?

相关内容