1

多くの小さなサーバーからデータを取得するアプリケーションを作成しています (「サーバー」はデータ ロガーであり、アプリはロガーからのデータを消費します)。データはサーバー上にファイルとして存在し、SSH FTP を使用してファイルを取得しています。具体的には、WinSCP の .NET ラッパーを使用しています。

これにはいくつかの問題があり、一部の転送は失敗し (Filezilla は成功しますが)、進行状況が報告されません。また、サーバーの帯域幅が限られているため、ダウンロードに時間がかかる場合があります。BITS を使用して転送を行いたいのですが、これは HTTP でのみ機能するようです。HTTP に切り替えることもできますが、現在、サーバーとローカル キャッシュのファイル サイズと日付を比較して、何をダウンロードする必要があるかを確認しています。これは、HTTP を使用して行うことはできないようです。

BITS と FTP を使用する方法はありますか? または、HTTP でダウンロードする必要があるものを確認する方法はありますか?

私はサーバーを完全に制御しています。彼らは現在、転送を容易にするために Linux と OpenSSH を実行しています。アプリケーションに VB と .NET Framework 4.0 を使用しています。

ありがとう。

4

1 に答える 1

1

Web URL への System.Net.HttpWebRequest をリクエスト メソッド「HEAD」で使用できます。その後、System.Net.HttpWebResponse を取得し、応答の ContentLength プロパティと LastModified プロパティをチェックして、ローカル キャッシュと比較できます。例えば

dim request as System.Net.HttpWebRequest
request=System.Net.HttpWebRequest.Create("http://...")
request.Method="HEAD"
dim response as System.Net.HttpWebResponse=request.GetResponse
dim fileLength as integer=response.ContentLength
dim fileDate as datetime=response.LastModified

明らかに、ファイルがない場合やサーバーが利用できない場合などに GetResponse が気に入らない可能性があるため、例外をトラップする必要があります。

これがお役に立てば幸いです、よろしく、デンバー

于 2013-04-12T08:56:10.883 に答える