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

관련 정보