![如何理解 nc -l 的作用](https://linux22.com/image/172005/%E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3%20nc%20-l%20%E7%9A%84%E4%BD%9C%E7%94%A8.png)
我读过手册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
可能会感觉有点倒退,但没有什么可以阻止nc
Flink 以这种方式进行通信。
答案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