web-dev-qa-db-ja.com

Netcat UDPファイル転送?

NetcatとUDPを使用してファイル(画像またはビデオ)を送信する方法はありますか?デフォルトはTCPですが、UDPを使用して送信したいと思います。 ncコマンドに単に-uを追加してみましたが、うまくいきませんでした。ここに私が使用している2つのコマンドがあります:

cat File.jpg | nc -u -l 777
nc -u 192.168.x.x 777 | pv -b > newfile.jpg

X.xのIPアドレスと、PC上の対応するファイルを使用しました。私はUbuntuも使用しています。

助けてくれてありがとう!

6
Vinnie

このようにしてみてください:

nc -u -l 7777 > newfile.jpg #on the destination machine
cat file.jpg | nc -u 192.168.x.x 7777 #on the source machine

通常は、マシンがファイルを「リッスン」する(最初に実行する)必要があり、リッスンしているときにudp経由でデータを送信します。 UDPには「ハンドシェイク」シーケンスがなく、誰もリスニングしていない場合でも、パケットはすぐに送信されます*。

* ICMPパケットを受け取って、ポートが閉じている(到達できない)こともありますが、それに依存することはできません(ファイアウォールなど)。

9
mulaz

私はこの質問に次のように答える必要があると思います:はい、Netcat over UDPのファイルsendingの方法があります。ただし、宛先ホストでこのファイルを確実にreceiveこのファイルにすることはできません。

宛先ホストで使用可能なファイルが必要な場合は、別の解決策を探してください。

3
Oliver

TCPオプションを使用するとnotでファイルが完全に受信されることが保証されます。

TCPは、16ビットのエラー保護のみを提供します。つまり、65,536通に1通の伝送エラーが発生します。

システム間でファイルを安全に送信するには、送信前にファイル全体のハッシュを計算し、受信後にそれを検証する必要があります。

その場合、UDP経由の送信は完全に有効です。ただし、伝送エラーの可能性を非常に低くする必要があります。ビジー状態のWiFIネットワーク経由、または大陸の反対側にあるコンピュータにこれを試みないでください。ただし、有線ネットワークを介した建物内では、エラーはほとんど発生しません。

2
Caitlin Bestler