p2p項目夭折,有種蛋蛋的憂傷。。
在高考完的暑假就在跟杰哥讨论怎样实现的校内p2p文件共享,就在今天。我们无奈的宣布差点儿夭折。
上图是測试图。
那时候的思路已经完好。就是:“学生上传共享文件到咱们工作室的server。server生成种子链接。用户使用软件进行下载。下载的时候优先搜索学校局域网内的电脑。检索相应文件”,我还具体写了Project分析。
可是由于仅仅有我一人写这软件,网络编程接触又不深。所以未能下定决心开干。
直到清明前。趁着有个软件设计大赛,我们两个便一口气报名參加并做p2p。
之后跟承天聊的时候,他也參加到我们来。
然后。我们3个就雄心勃勃的打算在20天内搞出来。我认为我们是非常好的合作团队,杰哥搞php后台。我和承天写软件。
途中遇到的一些技术问题。经过讨论和分析。都想到比較好的解决方法,除了穿透还有一层wifi内网那个还想不到好方法(我写过的文章:两个独立局域网的交流问题http: //blog.csdn.net/christopherwu/article/details/23714247)
上传文件仅仅是上传文件文件夹信息还有MD5,推断文件是否反复同样利用MD5.大文件利用中间10m来算出MD5.
还有,举出特别的样例:
1、A要下载Z文件。B,C,D多处有这个文件,将这文件固定分块。然后B负责发送1,C负责2,D负责3。保留max_number。当某人发送完,比方C。max_number+1返回给他。然后他继续max_number+1*block_size发送。
2、当仅仅有A有文件(如最新的电影),一下子有100以上的人到他那下载。须要,A把1给B,把2给C,B再把1转发给C。D,这样1传2,2传4
1我们都已经写了代码实现了。 。 。 。
我们还考虑到了,当某个时候,比方深夜,没有peer开着的时候。或者冷门资源,肯定须要备份资源。一開始打算初步上传不仅上传文件夹信息到server,还有文件在后台上传到server备份,再在某段时间删除超热门资源(冷门资源才须要备份)。
后来改成利用网盘Api,上传到网盘里,用php做成注冊验证开网盘。防止网盘像115那样夭折。我们还打算弄两个不同的网盘来备份。
还实用户积分制。鼓舞上传。下载加速;宿舍楼展示图,鼓舞交友。
迫使我们夭折的原因是:
1、没办法做到真正p2p,不是技术上的问题。而是用户。首先学校的用户少;其次。在资源上,除了游戏这些是长时间保留的,其它的差点儿用完就删除(比方电影)。这样子差点儿做不到p2p。什么是P2P精神?人人为我,我为人人!在P2P下载方式下,每一个用户既是下载者,也是上传者。这个才是最困难的地方。
2、上传目录。能够做到这个。可是文件大小,备份资源,目录反复性这3方面差点儿是解决不了的。可是,做成仅仅能上传文件,用户把文件压缩上传后就会删除源文件,这样又无法p2p了。 。
这样子,差点儿又变成了仅仅有一个源提供资源,丧失p2p的优势了。
这是深入项目后才发现的问题,好无奈。眼下还想不到好办法。好无奈啊!好不甘心。
我们都是按自己的想法来设计实现p2p的。最后却这样结束。
之前我们工作室有类似的资源共享(是用ftp下载形式),可是server硬盘坏了好几个。负责上传的那几个拥有特别帐号的人管不了,最主要是server全然死掉了。
我们才做p2p的。
。
p2p項目夭折,有種蛋蛋的憂傷。。的更多相关文章
- p2p項目”復活“之想
http://blog.csdn.net/christopherwu/article/details/23976503 原來以為p2p項目就要夭折,墮入絕望無奈的深淵之時,與多位朋友的交流,抬頭看見了 ...
- 在項目中快速部署SLF4J+LOGBACK
想了解SLF4J,LOGBACK是什么?可以访问:http://www.slf4j.org/ http://logback.qos.ch/ 本文大部分参考了Cody Burleson<Ho ...
- 「Ionic」創建新項目
1.創建新項目 创建一个名为myApp的还有tabs的项目(ionic start <project-name> <optional-template>) 可选模板为sidem ...
- 如何在版本控制工具中管理Sencha Architect的項目
根據數次痛苦的經歷結合stack overflow上的解答,發現原來還是可以使用svn.git之類的版本控制工具管理Sencha Architect生成的項目的. 具體的要點如下,假定項目記作{PRO ...
- ionic3 环境配置 + 運行第一個項目
1.首先我們先下載個 nodejs安裝包 地址:https://nodejs.org/en/ 安裝 檢查是否安裝成功,打開命令提示符 輸入 node -v 回車 查看版本 結果: 2.安裝ionic ...
- 樹莓派3B運行.Net Core2.1 Web 項目
安裝.Net Core 運行時和SDK(非必選) 下載地址 安裝 # 安裝運行時 sudo apt-get -y update # Install the packages necessary for ...
- 部署ASP.Net Core 2.1 項目到 IIS
用Asp.net core 2.1 寫了一個小的系統框架,記錄一下部署過程: 1. 首先是安裝 IIS 了,從 控制面板→程序→启用或关闭Windows功能→勾选Internet Informatio ...
- 使用TFS創建團隊項目
使用微軟賬號登錄Team Service,關聯一個TS賬戶,用來存放你所有的項目,可以從瀏覽器中直接訪問,地址類似yourname.visualstudio.com. 詳細鏈接 在TS賬戶主面板中,可 ...
- Maven項目打包報錯:Plugin execution not covered by lifecycle configuration
Maven項目打包報錯:Plugin execution not covered by lifecycle configuration 使用Eclipse导入一个新的maven项目时不时的会遇到这个错 ...
随机推荐
- DELL inspiron 14-7467 进入安全模式方法
您按住shift键不要松开,然后重启电脑,选择疑难解答-高级选项-启动设置-数字四 安全模式启动
- js Date() 时间函数处理 关于 toLocaleDateString()
toLocaleDateString()方法的真正含义为「根据本地时间把Date对象的日期部分转换为字符串」,这意味着:在不同的浏览器或者服务器中,我们可能得到不同的字符串. 例如,将 Chrome ...
- C语言声明语句
设计理念: C语言的一个设计理念就是声明变量和使用变量的形式应该是一致的 优点:声明变量和使用变量时的运算符优先级是相同的 缺点:运算符的优先级是C语言过度解析的部分之一 术语: 变量声明中使用到的符 ...
- thinkphp5 编辑时 唯一验证 解决办法
若定义了相关的验证规则,如: namespace app\seller\validate; use think\Validate; class Goodsmtag extends Validate { ...
- Docker搭建MySQL的PXC集群
原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...
- 【Educational Codeforces Round 41 (Rated for Div. 2) D】Pair Of Lines
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果点的个数<=3 那么直接输出有解. 否则. 假设1,2最后会在一条直线上,则把这条直线上的点都删掉. 看看剩余的点是否在同 ...
- Mysql学习总结(23)——MySQL统计函数和分组查询
1.使用count统计条数:select count(字段名...) from tablename; 2.使用avg计算字段的平均值:select avg(字段名) from tablename: 这 ...
- 洛谷 P2128 赤壁之战
P2128 赤壁之战 题目描述 赤壁之战,黄盖率舰满载薪草膏油诈降曹军. 受庞统所授的连环计,曹军战船之间由铁索相连,没有两艘战船在同一位置,也没有铁索两两相交或穿过战船.每艘船都有其一定的战略价值. ...
- Qt之pro配置多个子工程/子模块
简述 进行Qt项目开发的时候,尤其是大型项目,经常涉及多工程/多模块问题,其主要思想还是模块化,目的是为了降低程序复杂度,使程序设计.调试和维护等操作简单化. 简述 配置 效果 多工程 多模块 更多参 ...
- SQL的四种语言:DDL、DML、DCL、TCL
1. DDL(Data Definition Language) 数据库定义语言statements are used to define the database structure or sche ...