2012-02-19 7 views
-2

ソケットを使用してネットワーク上で大きなファイル(2〜3 GB)を送信するにはどうすればよいですか?私はサーバーからクライアントにファイルを送るソケットプログラムを書いています。しかし、300 MBを送信するのに非常に長い時間がかかります。Javaで大きなファイルを送信する

+2

ネットワークの接続速度はどれくらいですか?その量のデータを送信するのにどれくらいの時間がかかるかを計算します。 – Jesper

答えて

2

ネットワークがボトルネックかどうかを判断し、送信する前にファイルを圧縮します。送信者にDeflaterOutputStream、受信者にInflaterInputStreamを使用してください。 (ファイルが既に圧縮されている場合はこれを行わないでください。多くのメディア形式には圧縮が含まれます)。

+1

MP3オーディオやビデオファイルなど、すでに圧縮されている特定のファイル形式では、ほとんどの形式の圧縮(* deflate *を含む)はむしろ役に立たないことに注意してください。そのようなファイルに盲目的に圧縮を使用することは悪いアドバイスです... – thkala

+0

@thkalaそれは役に立たないかもしれませんが、それを大幅に悪化させる可能性は低いです。 –

+0

@thkala:良い点は、答えにそれを加えました。 –

0

インターネット接続のアップロード速度によっては、ファイルサイズが大きくなる場合があります。

アップロード速度が128Kbのブロードバンドがあるとします。 (あなたのダウンロード速度は関係ありません)

これは、最大16 KB(キロバイト)/秒を転送します。これは、1 MBが1分を超え、1 GBが16時間以上かかることを意味します。

関連する問題