異なるPC間でのファイル転送の高速化

このQ&Aのポイント
  • WindowsXP環境でPC1のHDDからPC2のHDDに1枚当たり16MBのbmpファイル(計256枚)を転送するという動作を行っています。
  • PCどうしはハブを介してLANで繋がっており、PC1のHDDがPC2のネットワークドライブになっています。
  • 現在はVC++6.0でプログラムを作成し、MoveFileEx関数でファイルの移動を行っています。110~160secほどで転送できていますが、転送速度を上げたいとマルチスレッドにしたら逆に遅くなりました。PC間での高速ファイル転送という目的を現在の環境から簡単な方法で実現できる方法はないでしょうか?
回答を見る
  • ベストアンサー

異なるPC間でのファイル転送の高速化

こんにちは。 WindowsXP環境でPC1のHDDからPC2のHDDに 1枚当たり16MBのbmpファイル(計256枚)を転送するという動作を行っています。 PCどうしはハブを介してLANで繋がっています。(1000base) PC1のHDDがPC2のネットワークドライブになっています。 現在はVC++6.0でプログラムを作成し、 MoveFileEx関数でファイルの移動を行っています。 110~160secほどで転送できていますが、 転送速度を上げたいとマルチスレッドにしたら逆に遅くなりました。 PC間での高速ファイル転送という目的を 現在の環境から簡単な方法で実現できる方法はないでしょうか? 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusa_mochi
  • ベストアンサー率76% (1599/2089)
回答No.2

一度、以下のソフトで転送するとどのくらい時間が掛かるか試してみてはどうだろう。  【Fire File Copy】   http://www.forest.impress.co.jp/lib/sys/file/syncbackup/firefilecopy.html 上記ソフトを使うと90秒以内で出来るなら、処理のアルゴリズムに改良の余地が有るという事になる。 マルチスレッドにするなら、私なら  ・ファイルを読み込んでメモリに溜め込む処理  ・メモリにあるファイルをネットワークで転送する処理 を別スレッドに分けると思う。 上記は送信側だが、もちろん受け側も  ・ネットワークで受け取ったファイルをメモリに書き込む処理  ・メモリにあるファイルをディスクに書き込む処理 に分けないと結局受け側がボトルネックになるので、両方で専用プログラムが処理する必要があるけど。 オンメモリのデータをネットワークに送るなら、もっとネットワークの使用効率を上げる事が出来るんじゃないかな。 現在は、「ディスクからの読み込み→ネットワークに送る」をループさせて処理させていませんか?

komehon
質問者

お礼

ありがとうございます。 Fire File Copyを使ってコピーした結果100sec程で転送できました。 アルゴリズム改良の余地があるということでしょうか… >>現在は、「ディスクからの読み込み→ネットワークに送る」をループさせて処理させていませんか? 現在は条件分岐で分けていますが、 MoveFileEx,またはCopyFile関数をループさせています。 これが「ディスクからの読み込み→ネットワークに送る」ということでしょうか? 送り側、受け側両方で処理が必要となると少し面倒ですね… 今はPC2で立ち上げたアプリでPC1のHDDからPC2のHDDに ファイルをコピーまたは移動するようにしています。 簡単にはいかないということですね…

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

とりあえず, 「目標を明確化」した上で「ボトルネックはどこか」を調べてみてはどうでしょうか.

komehon
質問者

お礼

ありがとうございます。 目標はVC++6.0で操作できる範囲でのPC間の高速ファイル転送(90sec以内が望ましい)です。 ボトルネックとしては現在、ファイル転送時のネットワーク使用率が 10~20%ほどしかないことだと思っています。 これを100%近くにできたらよいと考え、ファイルの移動部分を マルチスレッド使用して書いてみましたが 逆に遅くなりました。 ネットワーク使用率をあげるにはどうすればよいでしょうか?

関連するQ&A

  • ファイル転送速度について

    同一LAN内でPC2からPC1にファイルを転送(コピー)しています。 PC1(自作) CPU:3770k SSD:128GB MEMORY:DDR3 8GB NIC:1000BASE PC2(自作) CPU:G3220 HDD SATA 600 MEMORY:DDR3 8GB NIC:1000BASE LANケーブル:cate5e スイッチングハブ:100BASETX 現在、ファイル転送速度 約11.3MB/秒です。今の構成ですと、スイッチングハブとLANケーブルがネックとなり、転送速度はこのくらいだと思いますが、仮にLANケーブルをcate6やスイッチングハブをギガビット対応に変えた場合、どのくらいの転送速度が見込めるでしょうか。 また、PC2にあるMPEGファイルをPC1で見た場合、ほとんどコマ落ちしないのですが、たまにコマ落ちしたりするときがあります。これも改善されるでしょうか。

  • 高速ファイル転送

    現在Windowsliveメッセンジャやスカイプで ファイル転送をしてるのですが 1GBなど用量が大きくなると時間が長くなり とても困っております。 お互いPC前にはいる事を前提に高速にファイルの送受信が 出来るようなソフトはないでしょうか?

  • PCとのファイル転送

    XPERIA Z1(au)を使用しています。 Bluetoothを使用して、Windows7へファイル(写真)の転送はできましたが、その逆つまりPC内のファイルをスマホへ転送する方法が良くわかりません。 Bluetooth以外に、自宅のWiFi環境でCIFSやftpのような方法で、PCからスマホへファイル転送する方法があれば、あわせて教えて下さい。 スマホは初心者です。よろしくお願いします。

  • 有線LANでつないだPCのファイル転送が遅いです

    有線LANでつないだPCのファイル転送が遅いです 最近、光に変更したのでLANカード、ハブもギガビット対応の物に変えたのですが 有線LANでつないだPCのファイル転送が今まで通り11MB/sのままです。 どうすれば高速化できるのでしょうか。OSはどちらもXPです。

  • パソコンを使ってファイル(2GB)を高速転送(数分で転送終了)する際に

    パソコンを使ってファイル(2GB)を高速転送(数分で転送終了)する際に、暗号化など通信の安全性を確保するためにどうしていますか ファイル転送方法及びその通信の安全確保方法について教えてくださいね 是非、お願いします

  • PCの高速化

    こんにちわ! 最近、PCでDVDを観る機会が増え楽しんでいる のですが、欲が出て、高速化したいという気がして います。   以前、PENTIUM が出始めの頃、高速化するための 「CPUキット」なる物が出ていて、使用した記憶 が有ります。 ●1.現在は、こういう種類の商品は販売されてい    ないのでしょうか? ●2.メーカーに聞くと、マザーボード等の関係で    “出来ません”と言います。 ●3.高速化と言っても、いろいろな方法が有るで    しょうが、CPUのクロックを上げるとした    ら、製品そのものゝ買い替えしかないのでし    ょうか? そうとしたら、高価なものにつきますネ! ちなみに、使用しているPCは・・・  VALUESTAR PC-VC866J6FD です。(クロック 800MHz)

  • パソコン間でファイルを高速転送するには

    デスクトップpcとノートpcの2台が部屋の中で つながってます。 デスクpc---ADSLルータ----ノートpc ADSLは50M・・・なんとかとか言うやつです。 転送速度が50Mなんでしょうか? 50Mというのが よくわかっていません。 LANケーブルを介してファイル転送を行うと めちゃくちゃ時間かかります。 CD一枚分で数時間 という具合です。 もう少し早くする方法はないでしょうか? 数分で転送できるとありがたいのですが無理ですか。

  • VC++でファイルのオブジェクト

    VC++のMFCダイアログベースでプログラミングをしているのですが、ファイルI/Oに関して教えていただけないでしょうか。 現在、CFileを使用しています。 CFile f; で宣言したファイルオブジェクトを他の関数へ引き継ぐにはどうすればいいのでしょうか。 プログラム構造はマルチスレッドになっております。 うまく説明できないのですが、なにか助言をいただけないでしょうか。よろしくお願いします。

  • VCソース内でJPEGやGIFファイルをBMPファイルに変換する方法(記述方法)

    VBで、SavePicture ステートメントを用いることによりJPEGやGIFファイルをBMPファイルに変換され保管されますが、これをVBではなくVCで実現させたいのですが、VC用のステートメントなどあれば教えてください。

  • 家庭内でのファイルの転送

    今住んでいる家にPCが二台あります。二つとも同じハブに接続されてインターネットを行っています。このPC間でデータ容量の大きいファイルを転送したいのですがどのようにしたらよいかわかりません。二台ともOSはWINXPなので何度か試してみたのですがうまくいきませんでした。詳しい設定方法が掲載されているサイト等ありましたらお願い致します。