web-dev-qa-db-ja.com

Netcatを使用したUDPを介した一方向通信

多くの「スマート」デバイスがUDP経由でデータを送信している状況があります。送信側では何も変更できません。

私はnc(またはnetcat)をテストしていますが、以下を乗り越えることができません:

終了コマンドの受信:

nc -l -u 8123

送信コマンドのテスト:

echo "test" | nc -u 127.0.0.1 8123

最初のパケットは正常に機能しますが、両端が何らかのスリープ状態になっているようで、 CTRL+C 再試行します。それが機能すると、受信側が「リッスンし続ける」(-k)ようになり、パケットを処理します。

1
Scott May

マニュアルページによると、終了時に終了するには、-q0フラグをncに渡す必要があります。

1
Sod Almighty

答えは、もし出てきたら-このように使うとnetcatに明らかに問題がある-socatは解決策を提供した:

受信:

socat -u udp4-recv:8123 - 

送信:

echo "test" | socat - udp4-sendto:127.0.0.1:8123
1
Scott May

サーバ側: 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は「凍結」されます。

1
user147505