NCを使用して1秒ごとに継続的にメッセージを送信する方法

NCを使用して1秒ごとに継続的にメッセージを送信する方法

私は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にプログラムで単語を入力できるかどうかを知りたいです。たとえば、ターミナルAに1秒ごとに単語を入力したいのですが、lolどうすればいいですか?

以下のコードは機能しません。

#!/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」を送信する単一のインスタンスが起動します。

接続が開かれるまで「笑い」が蓄積されるので、接続直後に送信される「笑い」をたくさん見ることができます。最初に遅延を追加できます。

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

関連情報