Bash

如何使用nc每秒連續發送消息

  • April 27, 2020

我正在學習 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 程式碼。

將整個循環導入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

引用自:https://unix.stackexchange.com/questions/582833