先说一下我的需求:我的linodeserver近期ftp和sftp连不上了,port被封了。仅仅有http能够訪问,我没有办法上传文件了。由于我寻常都用beyond compare上传文件,非常方便。所以我希望能通过在本地起一个ftp服务,连接远程的httpserver,这样我的beyond compare还能继续使用。

需求非常easy,仅仅须要实现一个可扩展的ftpserver,然后把读本地文件的部分改写为通过远程的http接口訪问server上的文件系统。经过几天的努力,该功能已经所有实现了。





遇到的问题:

1. 大文件,对于大的文件,一般的httpserver都有上传文件限制大小,我是按段上传的,所以不会有这个问题。能够上传随意大小的问题。

2. 上面的问题衍生出来的新的问题,假设文件过大。按段上传可能会发起非常多http请求,过多的连接有可能耗尽本机的socketport。

眼下採用http1.1的长连接来降低连接次数,并同一时候设置socket的reuseAddress为true。

3. 分段上传所分段不可太小,否则非常慢,假设太大,浪费内存,假设同一时候上传文件过多。非常可能非常快耗尽虚拟机内存,由于来不及释放。所以採用自己主动调整缓存大小的策略,一開始使用一个非常小的缓存。每次flush缓存大小扩容一倍直到配置的最大值,最大不超过1M(可配置)。

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

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

ftp桥接到http服务的更多相关文章

  1. 将Tp-link无线路由器桥接到Dlink无线路由器上

    笔者家中原有两台笔记本和两台IPad,通过一台Dlink无线路由器(型号DIR-612,以下简称Dlink)上网,Dlink以PPPOE方式连到小区宽带.一直还可以. 后来为了练习Linux,启用了一 ...

  2. 解决无法连接到 reCAPTCHA 服务

    今天ytkah在查询一个信息时需要人机验证,但提示“无法连接到 reCAPTCHA 服务”,通过修改host文件可以解决相关问题,用editplus或notepad打开C:\Windows\Syste ...

  3. 连接到 redis 服务

    连接到 redis 服务 <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); ...

  4. linux ftp及C/S服务架构

    乱码转换工具使用convmv软件:windows中文字符编码为GB2312 linux中文字符编码为utf-8选项:-f:源文件中中文字符编码-t:转换成字符编码-r:代表递归--notest:不测试 ...

  5. ftp搭建 与http服务访问

    Linux安装ftp组件 1 FTP http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html安装vsftpd组件 安装完后,有/e ...

  6. ftp服务器使用-windowsftp服务起搭建

    首先打开控制面板选择程序 点击启动或关闭windows功能 勾选ftp服务器和IIS管理控制台点击确定 然后右键点击我的电脑,点击管理,然后点击本地用户和组,然后右键点击用户,点击新用户,创建一个用户 ...

  7. 在CentOS7上安装ftp服务器用于保存服务端上传的图片。

    1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftpd服务 [root@localhost /]# rpm -aq ...

  8. 数据连接到 Web 服务 InfoPath 2010 窗体中的 SharePoint 服务器上运行时的错误消息:"401-未经授权"解决方案

    症状: 请考虑以下情形: Web 窗体发布到 SharePoint 服务器. 您创建 Microsoft InfoPath 2010 表单所在的 SharePoint 服务器上使用到位于数据的数据连接 ...

  9. windows环境:dos 通过ftp连接到vsftpd 显示乱码解决方法

    转载至:https://blog.csdn.net/nydia_xiangxiang/article/details/48627921?utm_source=blogxgwz8 感谢原作者的分享 FT ...

随机推荐

  1. Mac与Window之间的共享文件

    Mac访问Window: Finder 菜单 “前往” ,然后“连接服务器”,在服务器地址输入 smb://windows主机名或ip地址/共享名(前提window已设置共享文件) Windows访问 ...

  2. ios捕获异常并发送图片,便于解决bug

    在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们能够让用户给我们发送邮件,以让我们开发者更加高速的地位到Bug的所在.以最快的时间解决.同一时候也提高用 ...

  3. HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids

    普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...

  4. 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密

    原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密 [索引页][源码下载] 与众不同 wi ...

  5. 14.4.9 Configuring Spin Lock Polling 配置Spin lock 轮询:

    14.4.9 Configuring Spin Lock Polling 配置Spin lock 轮询: 很多InnoDB mutexes 和rw-locks 是保留一小段时间,在一个多核系统, 它可 ...

  6. VC6迁移到VS2008几个问题——良好的代码,从我做起,从现在开始。

    最近.有一个项目开发,需要使用一次项目的代码.只有当项目VC6下编译通过的,在VS2008下不一定编译通过,能编译通过也不一定能链接成功.以下总结一下我在一个VC6项目移植到VS2008中遇到的一些问 ...

  7. Android自己定义控件——3D画廊和图像矩阵

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/39932689 1.3D画廊的实现 我们知道android系统已经为我们提供好了一个 ...

  8. Google 搜索的基本语法

    ★搜索引擎的选择 先简单说一下"搜索引擎的选择". 在咱们天朝,Google 屡屡被 GFW 骚扰,导致百度占了便宜,成为份额最高的搜索引擎.不过今天这篇教程,俺还是继续拿 Goo ...

  9. RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)

    void Rgb2Hsv(float R, float G, float B, float& H, float& S, float&V) { // r,g,b values a ...

  10. ZooKeeper安装与运行

    ZooKeeper安装与运行 首先从官网下载ZooKeeper压缩包,然后解压下载得到的ZooKeeper压缩包,发现有“bin,conf,lib”等目录.“bin目录”中存放有运行脚本:“conf目 ...