晚上回来,远程连接到系统,发现已有两个客户机无法正常传输文件了
观察了下日志,发现系统各方面都正常
应该是文件传输的服务器端文件指针的维护存在一些隐性的bug
在服务器长时间运行后,可能会导致本来可下载的文件超过最大下载限制而不可下载
把服务器重启下,一切又OK了
把ftp程序重新考虑下
可能会有如下的需求:
传输需求:
- 二进制数据采用base64编码
- 数据片的md5校验
- .断点续传
- 速度限制
服务器:
1.能够实时观察当前连接的客户,与每个客户当前正在下载的文件,以及下载的即时信息
2.对当前传输的文件进行控制,比如暂停,中止
3.主动将文件push给客户端
4.接收客户文件请求
5.下载文件的维护,比如同时下载同一份文件的用户数限制;
6.考虑下效率;比如大量用户请求同一份文件,可考虑cache;对文件的分片请求部分进行优化
客户端:
1.实时观测文件传输信息,比如进度与速度
2.能够接收用户对文件传输的控制
3.监听服务器的文件push
4.主动向服务器请求上传/下载文件
5.接收其他进程的任务请求
6.检测网络状况(时延),对文件的分片大小进行控制(不知道在无线传输时是否会优化性能?相对有线传输,无线较大的丢包率与较长的网络时延都可能较大的提高重传概率。)
服务器端是最需要完善的。现在只有一个功能,就是接收客户文件请求并响应,然后其他啥功能都没有了。
如果真能够把这个东西做好,还是挺有用处的。可以在不同的系统的复用。
问题是,会容许我继续在这个问题上面纠缠么?
会有时间继续完善么?
如果真的要做好,整个系统肯定需要重新构架,网络框架可能要自己来写,完成这些功能,至少需要 两个月。也许会更多。