目 录
第一章 开发背景............................................................................................................. 3
1.1P2P 的概念............................................................................................................... 3
1.2P2P 的思想溯源........................................................................................................ 5
1.3P2P 内容转移到“边缘”.............................................................................................. 7
1.4重新解读P2P........................................................................................................... 9
第二章 开发环境及实现技术......................................................................................... 12
2.1开发环境............................................................................................................ 12
2.2开发工具简介..................................................................................................... 12
第三章 系统设计........................................................................................................... 14
3.1概要设计............................................................................................................ 14
3.2详细设计............................................................................................................ 15
第四章 系统的实现....................................................................................................... 17
4.1主界面的实现..................................................................................................... 17
4.2点对点聊天模块的实现...................................................................................... 22
4
.
2
.
1
服务器端子模块的实现
.............................................................................22
4
.
2
.
2
客户端子模块的实现
................................................................................. 24
4.3点对点文件传输模块的实现............................................................................... 27
4
.
3
.
1
服务器端子模块的实现
.............................................................................27
4
.
3
.
2
客户端子模块的实现
................................................................................. 32
4.4上网功能模块的实现.......................................................................................... 35
设计心得....................................................................................................................... 38
参考文献....................................................................................................................... 39
第一章 开发背景
P2P是一种技术,但更多的是一种思想,有着改变整个互联网基础的潜
能的思想。
1.1p2p的概念
P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等
者”、“同事”和“伙伴”等意义。这样一来,P2P也就可以理解为“伙伴对伙
伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文
件交换、分布计算等方面大有前途。
简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。
P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。
P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那
样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以
大网站为中心的状态、重返“非中心化”,并把权力交还给用户。 P2P看起
来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互
联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模
式面对面地或者通过电话交流和沟通。
即使从网络看,P2P也不是新概念,P2P是互联网整体架构的基础。互
联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是
通讯的平等的一端。在十年之前,所有的互联网上的系统都同时具有服务
器和客户机的功能。当然,后来发展的那些架构在TCP/IP之上的软件的确
采用了客户机/服务器的结构:浏览器和Web服务器,邮件客户端和邮件服
务器。但是,对于服务器来说,它们之间仍然是对等联网的。以email为例
互联网上并没有一个巨大的、唯一的邮件服务器来处理所有的email,而是
对等联网的邮件服务器相互协作把email传送到相应的服务器上去。另外用
户之间email则一直对等的联络渠道。当然但是过去的5年里,互联网的
发展至少从表面上远离了P2P,互联网上绝大部分的节点也不能和其他节点
直接地交流。Napster正是唤醒了深藏在互联网背后的对等联网。
Napster的文件共享功能在局域网中共享目录也是再平常不过的事情。但
是Napster的成功促使人们认识到把这种“对等联网”拓展到整个互联网范围
的可能性。当然,在许多人的眼中,Napster并不是纯粹的P2P,它仍然需
要一个处于中心协调机制。
事实上,网络上现有的许多服务可以归入P2P的行列。即时讯息系统譬
如ICQ、AOL Instant Messenger、Yahoo Pager、微软的MSN
Messenger以及国内的OICQ是最流行的P2P应用。它们允许用户互相沟通
和交换信息、交换文件。用户之间的信息交流不是直接的,需要有位于中
心的服务器来协调。但这些系统并没有诸如搜索这种对于大量信息共享非
常重要的功能,这个特征的缺乏可能正 是为什么即时讯息出现很久但是并
没有能够产生如Napster这样的影响的原因之一。
另外一个可以归入P2P是拍卖网站譬如eBay,人们在总结eBay的模式
的时候用了C2C,是不是和P2P有一点类似?eBay就是一个将人们联系的
和交易物品的社区,用户可以方便的搜索其他用户叫卖的商品。eBay提供
了一些使得交易得以顺利进行的服务,但是交易是直接在用户之间进行的
如果将“交易”的概念推广,C2C就是P2P的一个特例,这里人们互相交换的
是商品。
但如果仔细深究的话,Napster和即时讯息在赋予用户之间直接交流的
能力、eBay使用户可以直接交易的同时,却破坏了服务器端的那种自互联
网出现之初就存在的对等联网思想,因为它们都需要有一个位于中心的服
务器来协调,而不是分布在世界上不同地方的、对等联网的许多服务器。
这也正是诸如Gnutella和Freenet不断的宣称它们创造了“纯粹”的P2P,完
全没有中心服务器的P2P服务。
1.2p2p的思想溯源
回到互联网的本质。
如果回顾一下,我们会发现在WWW出现伊始P2P就是互联网的本质特
征之一。人们各自建立网页、互相做链接,人们上网是沿着链接冲浪。那
时的web是真正的“网”(web)。但是当 Yahoo!和Lycos建立了搜索引
擎和门户站点后,人们上网的方式被改变了,人们从此到一个地方去获取
所有的信息。记得新浪曾经有一段时间说它们是“目标站点”模式,但是如果
多问一句,现在人们一条一条地阅读新浪的新闻,在头脑中还有一个“网”的
概念吗?最大的问题是,这些站点控制了信息的流动、充斥了过时的信息
阻碍了真正的交流,或者对于很多人来说,另外还有太多的广告。 P2P就
是把控制权重新还到用户手中去。人们通过P2P可以共享硬盘上的文件、目
录甚至整个硬盘。这种能量是非常令人激动的,那些费心存储在自己的硬
盘上的东西肯定是我们认为最有价值,所有人都共享了他们认为最有价值
的东西,这将使互联网上信息的价值得到极大的提升。是不是有一种和
WWW刚刚出现的时候同样的激动呢?有一点。