如何理解 nc -l 的作用

如何理解 nc -l 的作用

我读过手册nc,它告诉我这nc -l意味着

用于指定应该nc侦听传入连接而不是发起到远程主机的连接。将此选项与-p-s、 或选项结合使用是错误的-z。此外,使用该选项指定的任何超时-w都将被忽略。

据我了解, 的动作nc -l看起来像一个服务器。例如,在同一台服务器上,一个带有 的终端nc -l 9000将侦听端口 9000。另一个带有 的终端nc localhost 9000将成为客户端。这样我就可以从第二个终端向第一个终端发送消息。

不过,今天我正在学习 Apache Flink。这是Flink的Hello World:https://ci.apache.org/projects/flink/flink-docs-stable/getting-started/tutorials/local_setup.html

$ nc -l 9000
lorem ipsum
ipsum ipsum ipsum
bye

看来nc -l这里的动作是一种发送消息,而不是监听端口。

我现在很困惑。

答案1

作为传入连接的目标并不会阻止 netcat 发送数据。一旦客户端建立连接,它就可以向客户端发送数据,也可以从客户端接收数据。在本例中,它将数据发送到 Flink 客户端。

答案2

nc -l 9000在示例中充当服务器。 Flink 应用程序连接到该服务器并等待输入。请注意,运行该命令后,Flink 将启动nc

现在他们已经连接了。您输入一些单词nc,Flink 应用程序就会做出响应(通过写入输出文件)。

您用来向应用程序发送数据的事实nc -l可能会感觉有点倒退,但没有什么可以阻止ncFlink 以这种方式进行通信。

答案3

nc -l <port> 当然会打开 a<port>并监听连接

可以按照以下步骤验证该过程

步骤1:打开终端并通过执行以下操作来收听它nc -l 32000

第2步:打开另一个终端并连接到打开的端口telnet localhost 32000

步骤 2a:在任一终端中键入字符串,它们将被发送到另一个终端上的侦听器。


此外,运行 netstat 之后nc -l 32000将显示连接作为侦听器的状态

netstat -atn | grep 32000 tcp4 0 0 *.32000 *.* LISTEN

相关内容