多くの「スマート」デバイスがUDP経由でデータを送信している状況があります。送信側では何も変更できません。
私はnc(またはnetcat)をテストしていますが、以下を乗り越えることができません:
終了コマンドの受信:
nc -l -u 8123
送信コマンドのテスト:
echo "test" | nc -u 127.0.0.1 8123
最初のパケットは正常に機能しますが、両端が何らかのスリープ状態になっているようで、 CTRL+C 再試行します。それが機能すると、受信側が「リッスンし続ける」(-k)ようになり、パケットを処理します。
マニュアルページによると、終了時に終了するには、-q0
フラグをnc
に渡す必要があります。
答えは、もし出てきたら-このように使うとnetcatに明らかに問題がある-socatは解決策を提供した:
受信:
socat -u udp4-recv:8123 -
送信:
echo "test" | socat - udp4-sendto:127.0.0.1:8123
サーバ側: nc -ul 127.0.0.1 1234
-ポート1234でUDP接続をリッスンします
また:nc -l 1234
クライアント側: nc -u 127.0.0.1 1234
-udpを使用して127.0.0.1、ポート1234に接続します
クライアント側で何かを入力すると、サーバー側に表示されます。 (サーバー側で入力することもでき、クライアントに送信されます。)
あなたがするときecho "test" | nc -u 127.0.0.1 8123
、サーバー側は以前と同じままですが、クライアント側のnc
の標準入力がパイプ記述子にバインドされるようになりました。キーボードで入力すると、どこにも行きません。 nc
はパイプからの入力を待機しており、パイプは送信する必要のあるすべてをすでに送信しています。したがって、nc
は「凍結」されます。