私は、多くの「スマート」デバイスがUDPを介して私にデータを送信する状況に直面しました。送信側では何も変更できません。
nc(またはnetcat)をテストしていますが、次のことを通過できません。
終了コマンドの受信:
nc -l -u 8123
テスト転送コマンド:
echo "test" | nc -u 127.0.0.1 8123
最初のパケットはうまく機能しますが、両端がある種のスリープ状態に入っているようで、CTRL再試行する必要がありますC。動作すると、受信側で「継続リスニング」(-k) を行い、パケットを処理します。
答え1
答えは次のとおりです。 netcatはこのように使用すると明らかにいくつかの問題があります。 socatはソリューションを提供します。
受け取る:
socat -u udp4-recv:8123 -
送る:
echo "test" | socat - udp4-sendto:127.0.0.1:8123
答え2
サーバー側:nc -ul 127.0.0.1 1234
- ポート1234でUDP接続をリッスンします。
返品:nc -l 1234
クライアント:nc -u 127.0.0.1 1234
- UDP、ポート1234を使用して127.0.0.1に接続する
これで、クライアント側に何かを入力すると、サーバー側でこれを見ることができます。 (サーバー側で入力することもでき、クライアントに送信されます。)
これにより、echo "test" | nc -u 127.0.0.1 8123
サーバー側は以前と同じままになりますが、nc
クライアントの標準入力がパイプ記述子にバインドされます。キーボードを入力すると、行く場所はありません。nc
パイプからの入力を待っており、パイプは送信する必要があるすべてを送信しました。今nc
「凍結」されました。
答え3
マニュアルページによると、完了時に終了するように-q0
フラグを渡す必要があります。nc
答え4
いくつかのDNS関連エントリをテストしようとしていますが、欠けているのはflagsです-d
。nc
BSDを使用してUbuntu 22.04で完全なコマンド:
nc -d -l -q 0 -u 127.0.0.1 8123
stderrを介したデバッグ用に追加されました-v
。