nc
のマニュアルを読みましたが、nc -l
は
nc
がリモートホストへの接続を開始するのではなく、着信接続をリッスンすることを指定するために使用されます。このオプションを-p
、-s
、または-z
オプションと組み合わせて使用すると、エラーになります。さらに、-w
オプションで指定されたタイムアウトは無視されます。
私の理解では、nc -l
のアクションはサーバーのように見えます。たとえば、同じサーバー上で、nc -l 9000
のある端末はポート9000でリッスンします。nc localhost 9000
のある他の端末はクライアントになります。したがって、2番目の端末から最初の端末にメッセージを送信できます。
ただし、今日は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
のアクションは、ポートでリッスンするのではなく、一種のメッセージを送信しているようです。
私は混乱しています。
着信接続のターゲットであっても、netcatがデータを送信することを妨げません。クライアントが接続すると、クライアントとの間でデータを送受信できます。この場合、Flinkクライアントにデータを送信しています。
例のnc -l 9000
はサーバーのように機能します。 Flinkアプリケーションはこのサーバーに接続し、入力を待ちます。 Flinkはnc
コマンドを実行した後に開始されることに注意してください。
これで接続されました。 nc
に単語を入力すると、Flinkアプリケーションが応答します(出力ファイルに書き込むことにより)。
アプリケーションにデータを送信するためにnc -l
を使用するという事実は少し逆に感じるかもしれませんが、nc
とFlinkがこの方法で通信するのを妨げるものは何もありません。
nc -l <port>
は確かに<port>
を開き、接続をリッスンします
ステップ1:ターミナルを開いてnc -l 32000
を実行することでそれをリッスンします
ステップ2:別のターミナルを開き、telnet localhost 32000
で開いているポートに接続します
ステップ2a:どちらかの端末に文字列を入力すると、他の端末のリスナーに送信されます。
また、nc -l 32000
の後にnetstatを実行すると、接続の状態がリスナーとして表示されます
netstat -atn | grep 32000 tcp4 0 0 *.32000 *.* LISTEN