我想从我的计算机中获取一些文件(文本、视频、图像),我想将它们下载到我的 Android 设备上的文件夹中。我一直在寻找替代品,我认为有两种方法可以做到这一点,但我不知道使用其中一种方法是否有很大区别。
就我而言,哪种协议更好,为什么是 FTP 或 HTTP?我不需要上传任何东西,文件的大小不是太大。(我猜最大的文件大约是 5M)
我认为 HTTP 更容易,FTP 最快,可能吗?但我想,在编程中思考,哪个更好。
在速度方面,对于大于大约 10kB 的文件大小,两者是等效的。不同之处在于 FTP 在其数据通道上发送纯粹的原始数据,没有任何标头,因此开销略小。但是在将原始数据发送到通道之前,HTTP 只发送大约 12 行左右的文本作为每个文件的标题。因此,对于大约 10kB 或更小的文件,是的,HTTP 开销可能相当高——大约占总带宽的 1% 到 2%。对于大文件,十几行 HTTP 标头可以忽略不计。
FTP 为控制通道浪费了一个套接字,因此对于许多用户来说,HTTP 的可扩展性提高了两倍。请记住,您的操作系统可以打开的套接字数量有限。
最后,最重要的考虑是很多人通过防火墙访问互联网。无论是公司、学校、宿舍或公寓楼。并且很多防火墙被配置为只允许 HTTP 访问。您可能会发现有时您因此无法访问您的文件。当然,有很多方法可以解决这个问题,但这是您必须考虑的另一个麻烦。
补充回答:
我看到您询问访问限制和安全性。HTTP 的一个小缺点是您需要编写自己的 Web 应用程序来实现它。只需使用 HTTP 基本身份验证编写配置文件,即可将 Apache 之类的 Web 服务器配置为执行此操作。
Luckily, people have had this problem before and some of them have written software to do this. Google around for "HTTP file server" and you'll find many implementations. Here's one fairly good open source web app: http://pfn.sourceforge.net/
Also, if you really want security you should set up SSL/TLS for your server regardless weather you end up using FTP or HTTP.
我会推荐HTTP。它允许您下载具有多个连接的文件,您可以轻松共享 url,您还可以在除 http 之外的所有端口都被阻止的受限环境中下载它。
如果您想按用户控制对文件的访问并且还需要大量上传,则 FTP 更合适。
添加:
您也可以使用 .htaccess 文件在 http 中实现安全性。但是,它的可扩展性不是很好,不适合具有不同访问权限的用户太多。
还有其他几种保护 http 上文件的方法。您将能够在http://sourceforge.net上找到许多开源实用程序,它们可以让您做到这一点。在速度方面,http 是最好的。它允许您获取文件的任意部分,因此可以进行多线程下载。
您会注意到大多数文件共享站点都使用 http 并且出于可扩展性的原因。