我可以在FTP上使用后台智能传输服务吗?

时间:2013-02-28 17:50:33

标签: vb.net http ftp sftp

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用请求方法“HEAD”将System.Net.HttpWebRequest用于Web URL。然后,您可以获取System.Net.HttpWebResponse并检查响应的ContentLength和LastModified属性以与本地缓存进行比较。 e.g。

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可能不喜欢它等等。

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