2013-02-28 63 views
1

我正在編寫一個從許多小型服務器獲取數據的應用程序(「服務器」是數據記錄器,應用程序使用記錄器中的數據)。數據作爲服務器上的文件存在,我一直在使用SSH FTP來獲取文件。具體而言,我使用的是.NET wrapper for WinSCP我可以在FTP上使用後臺智能傳輸服務嗎?

我遇到了一些問題,一些傳輸失敗(而Filezilla成功)並且它不報告進度。另外,由於服務器的帶寬有限,下載可能會很長。所以我想使用BITS來進行傳輸,但它似乎只適用於HTTP。我可以切換到HTTP,但我目前通過比較服務器上的文件大小和日期以及本地緩存來檢查需要下載的內容。這似乎不可能使用HTTP。

有沒有辦法使用BITS和FTP?或者有什麼方法可以檢查需要使用HTTP下載的內容?

我完全控制了服務器。他們目前運行Linux和OpenSSH來促進傳輸。我正在使用VB和.NET框架4.0的應用程序。

謝謝。

回答

1

您可以使用請求方法爲「HEAD」的Web.Net中的System.Net.HttpWebRequest。然後,您可以獲取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的可能不喜歡它,如果文件不存在或服務器不可用等

希望這會有所幫助,關心,丹佛

相關問題