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项目时不时的会遇到这个错 ...
随机推荐
- python对比图片
通过python的PIL模块可以对比两张图片是否相同,具体源码如下 from PIL import Image from PIL import ImageChops def compare_image ...
- C语言数组和指针是不同的
有一个这样的错误: 在一个文件中定义:int mango[100]; 在另一个文件中声明:extern int *mango; 将会产生错误 定义和声明的区别: 在C中,任何对象都有且只有一个定义 ...
- Linux的硬链接、软连接与拷贝
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).硬链接:创建一个与原文件任何信息都相同的目标文件(文件名可能不同,自由设定).硬连接的 ...
- jquery validate验证remote时的多状态问题
因为远程验证用户名时可能会出现几种错误情况: 1.用户名字符非法: 2.长度超限: 3.用户名已经存在: 但remote返回的内容只能是布尔型的,即使用dataFilter来过滤也不知道如何对应的把错 ...
- Solr DataImportHandler 配置
DIH主要用于从数据库抓取数据并创建索引.另外还能够从HTTP(RSS.ATOM)拉数据. 相关概念: Datasource:数据源,包含获取数据必需的信息:数据位置(url).数据库driver.登 ...
- codevs1052
题目地址:http://codevs.cn/problem/1053/ 分析: 模拟 代码: var s:string; a:array['a'..'z'] of longint; i,j,t,n:l ...
- poj_2352树状数组
因为y已经排好序了,用x坐标建立一维树状数组 #include<iostream> #include<cstdio> #include<cstring> using ...
- wireshark界面调整成英文的
https://ask.wireshark.org/questions/48823/change-the-gui-language 英文版设置 From the Edit (Bearbeiten) m ...
- layer是什么
layer是什么 总结 layer就是一个web弹框 简介 layer是一款web弹层组件,致力于服务各个水平段的开发人员. 可以让你想到即可做到的web弹窗 概述 [1] layer,一个可以让你 ...
- django uWSGI nginx搭建一个web服务器 确定可用
网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...