admin管理员组

文章数量:1573383

一定要开发出一个文件共享软件,发帖为证

主要功能:

支持文件的分享与下载

细节:

1,文件/目录共享

2,私密通道传输

3,好友加速通道传输

4,对话/群聊

5,支持bt协议

性能要求:

1,带宽切换

2,资源战胜低

3,聊天支持贴图,放音乐

4.高度安全,加密传输

5,高性能


优先开发文件共享与传输,其次界面,其次聊天。

开发时长:半年

开发人数1--3人


技术选择:

1,编程语言c++/boost

2,界面,nodejs + xml + opengles

3,数据库:服务器选用mysql,本地选择sqlite

4,网络库asio/libevent待定

5.服务器管理工具,C#开发

6,编译与打包脚本nsis/python

7,开发工具, linux vim /sourceinsight   windows/vs 08 or 12

8,支持平台,windows

9,界面开发工具,界面ide+notepad++

10,文档:word, starUml

11, google code svn

12,测试环境,暂定。

13,开发顺序:由内到外,由主到次

14,层次要分明,以利于跨平台,或替换

15.日志.log4cplus


框架:

服务器端:

1,资源表:

包括文件的id, 文件标识,文件的名称,文件大小,文件类型等,文件的片标识id,分片大小

2,资源用户表:

资源作为key, 资源的用户列表,(资源可包括文件标识和文件片标识)

3,在线用户列表

用户的连接数,用户是否超级种子,用户的文件,用户的网速,用户的带宽,用户的模式(全速或上网等模式)

4,用户资源表:

表2的反序,以用户作为key,资源列表。

5用户表:

用户的令牌,用户的唯一标识/临时标识。用户的注册信息。级别等(与聊天整合,包括好友/群等)


用户需要定时上报状态,以便服务器作调度,及其它用户作下载源选择,服务器并以此作用户在线状态判定。上报的内容放在在线用户列表中。


客户端:

1,界面类似于网络蚂蚁或迅雷。

2,用户为对方建立专用通道(高速通道),优先对此客方传输。

3,反吸血

4,用户之间传输的文件可以是服务器不知道的

5,用户可以在既有协议上走自己定义的协议,服务器退化成一个代理或打洞的,这样可以方便扩展出聊天功能,及反封杀。

6,服务器只定义基本的协议,其它的以插件的方式提供(参见上一条款)

7,协议优先级,p2s > p2p

8,客户端的界面问题:先实现基本功能,以后再迭代或重构


协议:

1上报:

隐含登记。 上报网络状态及资源

  先上报资源id,服务器发现没有则上传资源内容《支持单个和多个》。第一遍无条件上报内容,以后用简单资源上报协议

请求分配peer协议:带有文件或文件片的唯一标识

资源查询

服务器返回peer协议, 服务器选择peer的策略

服务器拒绝协议

打洞的协议

自定义协议

文件传输,请求块。

以上的协议包括p2s和p2p


实现:


1,模块

包括:打洞层 文件传输层, p2p交互层, 文件本地处理层。 协议层,管理调度层

ui层,数据库操作层,状态统计上报。调试展示接口层。


本文标签: 共享软件文件