【问题标题】:Can I use Background Intelligent Transfer Service with FTP?我可以通过 FTP 使用后台智能传输服务吗?
【发布时间】:2013-02-28 17:50:32
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: vb.net http ftp sftp


    【解决方案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 可能不喜欢它。

    希望这会有所帮助,问候,丹佛

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2010-11-19
      • 2023-04-03
      • 2010-12-22
      • 2011-03-10
      相关资源
      最近更新 更多