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项目时不时的会遇到这个错 ...
随机推荐
- 在 android studio 中更新安卓应用版本号
随着应用程序不断修改,版本号也应当变化.要更新安卓应用的版本号,只需要在 build.gradle(module:app) 中修改 versionCode 和 versionName 即可,也可以只改 ...
- npm 6.0.0 版本npminstall报npm:write after end错误
这两个多月一直开发小程序,今天准备开发公众号,使用Vue-cli 脚手架搭建项目时候, npm install 就报错误,我就奇葩了!心里一万个曹尼玛....... 因为之前使用安装包的提示升级,自己 ...
- shell 文件中添加内容
下文所有 1111 , 2222 均为字符串 sed -i '/1111/i\2222' a.txt 在a.txt中找到所有符合1111得 前面加上2222 sed -i '/1111/a\2 ...
- py_One
1.Python 标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中的标识符是区分 ...
- Login.hbm.xml
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLI ...
- 洛谷 P1572 计算分数
P1572 计算分数 题目描述 Csh被老妈关在家里做分数计算题,但显然他不愿意坐这么多复杂的计算.况且在家门口还有Xxq在等着他去一起看电影.为了尽快地能去陪Xxq看电影,他把剩下的计算题交给了你, ...
- java实现上传图片
1.将图片上传到tomcat下 2.将相对路径存放到数据库中 @RequestMapping(params="upLoadPicture") @ResponseBody publi ...
- java里的一些特别值得注意的地方
return 语句的作用:1.返回值 2.结束某个方法的执行. 局部变量必需要初始化,全局变量系统会默认初始值: 整型数赋默认值为0. 浮点数赋默认值为0.0,boolean赋默认值为false. c ...
- Fragmen直接来回切换deno
思路: 第一步.建立一个activity.用来管理fragment. 第二步'获取fragmentManger 和fragmentTraction. private FragmentManager f ...
- 三角函数之美-水波纹载入LoadingView
一.前言 学习是要总结的.近期几天学习了画图相关的,可是使用的机会较少,如今又快要遗忘了,这次看了水波纹的绘制.认为十分有意思,还是 把实现的方法记录下来.技术无他,为手熟尔.还是要多练习,空淡误国, ...