2011-07-08 14 views
1

SSH鍵ペア認証を使用してSFTPサーバからファイルをダウンロードするC#コンソールアプリケーションを開発しています。SFTP SSH2ダウンロードレート(C#)

私はChilkat APIを使用しています。

ダウンロードしようとしているファイルは、8GB〜13GBと非常に大きいです。

現在、私は私のアプリを使用して得ることができ、最大のダウンロード速度は、私はFileZillaをを使用して同じファイルをダウンロードしようとした場合、私はからの実行2.6メガバイト/ sの

のダウンロード速度を得るの周りに570キロバイト/ sの

です同じネットワーク上の同じコンピュータ。

FileZillaのダウンロード速度をコンソールアプリケーションと一致させる方法はありますか?

+0

ようこそ。自分の質問を編集して更新することができます。あなたは質問(upvoteまたはdownvote)に投票することができます。あなたのニーズを満たし、あなたの質問に答える答えが得られたら、それを –

答えて

-1

SFTPの速度に影響する要因はいくつかあります。 SSHバッファサイズ、SFTPバッファサイズ、パイプライン長はこれらの要因の1つです(暗号化アルゴリズムはもう1つです)。もう1つの要因は言語です。最適化されたC++コードは、常にC#コードより高速です。したがって、FileZillaと同等の速度を達成することができますが、それらを一致させることはまずありません。

代替SFTPコンポーネントもチェックしました(市販されています)。

+0

Chilkat APIを使っているのは間違いありません。私はRebex SFTP APIを試してみました。ダウンロードは同じスピードでした。その後、Rebexには、バッファサイズとTCPウィンドウサイズを増加させるUseLargeBuffersというオプションがあり、ダウンロードを有効にした後に2.8MB/sを超えたことがわかりました。残念ながら私はChilkatのライセンスしか持っていないので、電子メールで送信して、バッファサイズとTCPウィンドウサイズを増やすことを知らせました。彼らはそれを調べている。 –

-1

SFTPは安全です。そのため、低速でダウンロードしています。同様の速度が必要な場合は、FTPを使用してダウンロードするか、速度を制限しないようにサーバー設定を変更する必要があります。

+2

としてマークすることができます。FileZillaもSFTP Connectionを使用しています。同じ秘密鍵。同じポート... –

+0

ああ...それはChilkat APIです。どこかにダウンロード速度が遅くなっています。ファイルを連続して読み書きするために、ダウンロード時に予め定義されたバイト配列(通常は4kbのサイズ)を設定すると、FileZillaはより大きい配列を使用している可能性があります。 –

0

です。

現実的な結果を得るには、バッファサイズはファイルサイズによって異なります。大きなファイルのために小さなバッファを必要としません(あなたの場合、ボトルネックはバッファを管理しているアプリケーションであり、接続速度ではありません)。

また、小さなファイルには大きなバッファを必要としないため、進捗状況に従わないようにします。

1

私はこれが超古かったと知っていますが、誰も明示的にそれに明確に答えていません。 Chilkatは、ネットワークパフォーマンスがある場合は、SoRcvBufとSoSndBufのサイズを増やすことを推奨します。私はあなたとまったく同じ問題を抱えていて、これが私の問題を解決しました。 ChilKat documentation:から

公共int型SoSndBuf {取得します。セット; }

送信バッファサイズソケットオプションを設定します。通常、このプロパティは変更しないでください。デフォルト値は0であり、送信バッファサイズソケットオプションを明示的に設定すべきでないことを示します(つまり、システムによって異なるシステムデフォルト値を使用する必要があります)。

このプロパティは、アップロードの処理速度が遅い場合に変更できます。現在のシステムのデフォルトの送信バッファサイズを確認するには、接続を確立するメソッドを呼び出した後にLastErrorTextプロパティを調べます。見出し "SO_SNDBUF"の下に報告する必要があります。パフォーマンスを向上させるには、デフォルト値の2倍、3倍、または4倍に設定してみてください。