1

我正在编写一个从许多小型服务器获取数据的应用程序(“服务器”是数据记录器,应用程序使用来自记录器的数据)。数据作为文件存在于服务器上,我一直在使用 SSH FTP 来获取文件。具体来说,我正在为 WinSCP 使用 .NET 包装器

我遇到了一些问题,一些传输失败(而 Filezilla 成功)并且它不报告进度。此外,由于服务器的带宽有限,下载可能会很长。所以我想使用 BITS 进行传输,但似乎这只适用于 HTTP。我可以切换到 HTTP,但我目前通过比较服务器和本地缓存上的文件大小和日期来检查需要下载的内容。使用 HTTP 似乎不可能。

有没有办法使用 BITS 和 FTP?或者有没有办法用 HTTP 检查需要下载的内容?

我可以完全控制服务器。他们目前运行 Linux 和 OpenSSH 以促进传输。我正在为应用程序使用 VB 和 .NET 框架 4.0。

谢谢。

4

1 回答 1

1

您可以将 System.Net.HttpWebRequest 用于请求方法为“HEAD”的 Web URL。然后,您可以获取 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 回答