nc -lの機能を理解する方法

nc -lの機能を理解する方法

マニュアルを読んだところ、これが意味するものが示されてい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ここでの作業は、受信ポートではなくメッセージを送信する作業のようです。

私は今混乱しています。

答え1

着信接続の対象になるため、netcatがデータを送信するのを防ぎません。クライアントが接続を確立すると、クライアントとデータを送受信できます。この場合、データをFlinkクライアントに送信します。

答え2

nc -l 9000例ではサーバーとして機能します。 Flinkアプリケーションはこのサーバーに接続し、入力を待ちます。このコマンドを実行すると、Flinkが起動しますnc

今彼らは接続されています。単語を入力すると、ncFlinkアプリケーションが応答します(出力ファイルに書き込む)。

これを使用してアプリケーションにデータを送信するという事実は少し遅く見えるかもしれませんが、Flinkがこのように通信するのをnc -l防ぐことはできません。nc

答え3

nc -l <port> もちろん、aを開き、<port>接続を受信します。

以下の手順でプロセスを確認できます。

ステップ1:ターミナルを開き、次のことを試してみてください。nc -l 32000

ステップ2:別の端末を開いて開いているポートに接続します。telnet localhost 32000

ステップ2a:2 つの端末のいずれかに文字列を入力すると、他の端末のリスナーに送信されます。


また、netstatを実行すると、nc -l 32000接続状態がリスナーとして表示されます。

netstat -atn | grep 32000 tcp4 0 0 *.32000 *.* LISTEN

関連情報