码迷,mamicode.com
首页 > Web开发 > 详细

ftp桥接到http服务

时间:2015-06-30 01:26:33      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:ftp http java

先说一下我的需求:我的linode服务器最近ftp和sftp连不上了,端口被封了,只有http可以访问,我没有办法上传文件了。
因为我平常都用beyond compare上传文件,很方便。所以我希望能通过在本地起一个ftp服务,连接远程的http服务器,这样我的beyond compare还能继续使用。


需求很简单,只需要实现一个可扩展的ftp服务器,然后把读本地文件的部分改写为通过远程的http接口访问服务器上的文件系统。
经过几天的努力,该功能已经全部实现了。


遇到的问题:

1. 大文件,对于大的文件,一般的http服务器都有上传文件大小限制,我是按段上传的,所以不会有这个问题。可以上传任意大小的问题。


2. 上面的问题衍生出来的新的问题,如果文件过大,按段上传可能会发起很多http请求,过多的连接有可能耗尽本机的socket端口,

   目前采用http1.1的长连接来减少连接次数,并同时设置socket的reuseAddress为true。


3. 分段上传所分段不可太小,否则很慢,如果太大,浪费内存,如果同时上传文件过多,很可能很快耗尽虚拟机内存,因为来不及释放。
   所以采用自动调整缓存大小的策略,一开始使用一个很小的缓存,每次flush缓存大小扩容一倍直到配置的最大值,最大不超过1M(可配置)。

   一般的小文件,基本不需要扩容。


4. 为了使程序尽可能简单,一开始上传采用段数据的时候采用了base64编码,经测试大文件感觉较慢,后来改为chunked方式上传,速度可以提升好几倍。

版权声明:本文为博主原创文章,未经博主允许不得转载。

ftp桥接到http服务

标签:ftp http java

原文地址:http://blog.csdn.net/xuesong123/article/details/46689317

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!