2009-08-29 5 views

答えて

1

これら3つのうち、そのHTTP。

FTPは、セッションを安定させるにはあまりにも多くの「会話」を必要とし、データを転送するための並列接続を作成します。このすべての「話す」に少し時間がかかりますファイルの転送を開始します。 FTPクライアントが「パッシブモード」をサポートしていない場合は、FTPを使用してランダムポートを開くため、ファイアウォールやルーターに問題が生じる可能性があります。

HTTPはより客観的で、接続し、あなたが望むものを教えて、答えとして取得します。いいえ、何も言わない。

SSHは転送プロトコルではありません。 SSHは "Secure Shell"の略です。 SSLを意味する場合、HTTPセッションをカプセル化するためによく使われるセキュリティー層である転送プロトコルでもありません。

しかし、おそらくどちらが速いのかという問題ではなく、本当の質問は何をしたいのですか?あなたの問題によっては、それらのどれもオプションではありません。

0

エンドポイントと介入するファイアウォールの両方を制御できますか。 FTPは、他のオプションよりもファイアウォールに優れています。 SSHベースのツール(sftp、scp)はかなり良いですが、ISPの中には暗号化されたトラフィックを抑制するものがあると知られています(Comcast、私はあなたを見ています!)rsyncを考えましたか?私の仕事では、長距離インターネット接続で巨大なデータセットを転送するために使用しているのです。

1

可能であれば、Socket.SendFile()を使用してください。これは、ポイントAからポイントBまでファイルを取得する最も簡単な方法です。達成しようとしていることの詳細を知らなければ、より良い推奨を与えることは本当に難しいです。 FTPはおそらく私がそうでなければ使用するものであり、System.Netはあなたが使用できるかなりまともなFtpClientオブジェクトを持っていて、サンプルはかなりうまく書かれています。 HTTPとFTPはどちらもTCPを使用しているため、HTTPとHTTPとの間に大きな速度差がないと思われるので、通常は他の潜在的な動作のヘッダーがあります(Expect-100 Continueでファイルをアップロードし、AUTHあなたの接続に何が起こるかを見てください)。 Socket.SendFile()はソケットが定義されたプロトコルに依存しないため、同じコードでUDPまたはTCP経由でファイルを送信する可能性がありますが、パケット損失が実質的に0であるLAN経由で送信する場合にのみ推奨しますインターネット上のUDPは良い考えではありません。