如何使用nc每秒连续发送消息

如何使用nc每秒连续发送消息

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

这个例子是一个程序,每5秒统计一次单词数。

如果我们想运行这个示例,我们需要执行以下步骤:

  • 在一个终端上执行nc -l 9000(A);
  • 在另一个终端上执行./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9000(B);
  • 转到终端 A 并输入一些单词。

如果我们Ctrl-c在终端A,这个样本将会被终止。

我想知道是否可以在终端A以编程方式输入单词。例如,我想lol在终端A每秒输入单词,我该怎么办?

下面的代码将不起作用。

#!/bin/bash

while true; do
    echo 'lol' | nc -l 9000
    sleep 1
done

当然,我可能会尝试修改来SocketWindowWordCount.java这样做,但目前,由于某种原因,我无法更改java代码。

答案1

将整个循环通过管道传输到nc

while true; do
    echo 'lol'
    sleep 1
done | nc -l 9000

这将启动 的单个实例nc,侦听端口 9000 上的连接,并每秒向其发送一次“lol”。

请注意,“lol”会累积,直到连接打开,因此您可能会看到连接后立即发送许多“lol”。您可以在开始时添加延迟:

(sleep 5
 while true; do
     echo 'lol'
     sleep 1
 done) | nc -l 9000

相关内容