点对点聊天文件传输系统.docx

上传人:b****4 文档编号:27268363 上传时间:2023-06-28 格式:DOCX 页数:20 大小:95.53KB
下载 相关 举报
点对点聊天文件传输系统.docx_第1页
第1页 / 共20页
点对点聊天文件传输系统.docx_第2页
第2页 / 共20页
点对点聊天文件传输系统.docx_第3页
第3页 / 共20页
点对点聊天文件传输系统.docx_第4页
第4页 / 共20页
点对点聊天文件传输系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

点对点聊天文件传输系统.docx

《点对点聊天文件传输系统.docx》由会员分享,可在线阅读,更多相关《点对点聊天文件传输系统.docx(20页珍藏版)》请在冰豆网上搜索。

点对点聊天文件传输系统.docx

点对点聊天文件传输系统

点对点聊天文件传输系统

 

点对点聊天和文件传输程序

摘要

本程序使用VB语言编程,使用WinSock控件完成的点对点(P2P)聊天和文件传输程序。

可以实现两台机器间互发消息,并且有聊天和文件传输记录,安全可靠。

关键词

p2pWinSock,聊天和文件传输程序,VB

第一章开发背景3

1.1p2p的概念3

1.2p2p的思想溯源5

“边缘”7

1.4重新解读P2P9

第二章开发环境及实现技术12

2.1开发环境12

2.2开发工具简介12

第三章系统设计14

3.1概要设计14

3.2详细设计15

第四章系统的实现17

4.1主界面的实现17

4.2点对点聊天模块的实现20

4.2.1服务器端子模块的实现20

4.2.2客户端子模块的实现23

4.3点对点文件传输模块的实现26

4.3.1服务器端子模块的实现26

4.3.3客户端子模块的实现31

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、AOLInstantMessenger、YahooPager、微软的MSNMessenger以及国内的OICQ是最流行的P2P应用。

它们允许用户互相沟通和交换信息、交换文件。

用户之间的信息交流不是直接的,需要有位于中心的服务器来协调。

但这些系统并没有诸如搜索这种对于大量信息共享非常重要的功能,这个特征的缺乏可能正是为什么即时讯息出现很久但是并没有能够产生如Napster这样的影响的原因之一。

另外一个可以归入P2P是拍卖网站譬如eBay,人们在总结eBay的模式的时候用了C2C,是不是和P2P有一点类似?

eBay就是一个将人们联系的和交易物品的社区,用户可以方便的搜索其他用户叫卖的商品。

eBay提供了一些使得交易得以顺利进行的服务,但是交易是直接在用户之间进行的。

如果将“交易”的概念推广,C2C就是P2P的一个特例,这里人们互相交换的是商品。

但如果仔细深究的话,Napster和即时讯息在赋予用户之间直接交流的能力、eBay使用户可以直接交易的同时,却破坏了服务器端的那种自互联网出现之初就存在的对等联网思想,因为它们都需要有一个位于中心的服务器来协调,而不是分布在世界上不同地方的、对等联网的许多服务器。

这也正是诸如Gnutella和Freenet不断的宣称它们创造了“纯粹”的P2P,完全没有中心服务器的P2P服务。

回到互联网的本质。

如果回顾一下,我们会发现在出现伊始P2P就是互联网的本质特征之一。

人们各自建立网页、互相做链接,人们上网是沿着链接冲浪。

那时的web是真正的“网”(web)。

但是当Yahoo!

和Lycos建立了搜索引擎和门户站点后,人们上网的方式被改变了,人们从此到一个地方去获取所有的信息。

记得新浪曾经有一段时间说它们是“目标站点”模式,但是如果多问一句,现在人们一条一条地阅读新浪的新闻,在头脑中还有一个“网”的概念吗?

最大的问题是,这些站点控制了信息的流动、充斥了过时的信息、阻碍了真正的交流,或者对于很多人来说,另外还有太多的广告。

P2P就是把控制权重新还到用户手中去。

人们通过P2P可以共享硬盘上的文件、目录甚至整个硬盘。

这种能量是非常令人激动的,那些费心存储在自己的硬盘上的东西肯定是我们认为最有价值,所有人都共享了他们认为最有价值的东西,这将使互联网上信息的价值得到极大的提升。

是不是有一种和刚刚出现的时候同样的激动呢?

有一点。

因为每个Peer都代表了其后的人,基于自组织的网上社区也正在显现。

与门户站点从上而下建立社区的方式不同,人们将以自发的方式形成社区。

当人们加入P2P网络的时候,所有人都拥有了平等的机会,所有人都拥有了极容易地在网络上创造“内容”的机会。

当然,真正在网络上创造或提供内容的人还是少数的,据统计Gnutella的用户中仅仅有2%向其他用户提供了内容,即使在比较活跃的Usenet张贴文章的用户也仅占所有用户的7%。

但是,P2P第一次使得所有上网的人都拥有了平等的机会。

下面试图用三句话来揭示P2P的影响:

对等联网:

是只读的网络的终结(Peer-to-peeristheendoftheread-onlyWeb)

对等联网:

使你重新参与互联网(Peer-to-peerallowsyoutoparticipateintheInternetagain)

对等联网:

使网络远离电视Peer-to-peersteeringtheInternetawayfromTV如上文所言,P2P不是一个新思想,从某些角度看它甚至是整个最初创建互

联网的最基本的思想。

我们不妨花时间作一点回顾。

互联网的发展于近现代的许多尖端科学技术的发展模式并无不同,即都是先在军事工业形成,再转到民用领域。

互联网发源于至今看来也十分新颖的战略思想:

为了避免敌人的毁灭性武器命中全国的军事指挥控制中心,应该怎么办?

传统的方法是一方面想方设法尽可能地不让敌人知道中心的确切位置,另一方面提高中心的抵御打击的能力。

但在当今的核武器年代,对方有着连一个星球都可以炸毁的核弹,再固若金汤的防御措施一旦受到攻击肯定马上化为乌有。

而只要有机密存在,总有打探出机密的方法,所以靠保密中心所在位置的方法也不是长远之计。

在这种情况下,美国的军事人员充分发挥逆向思维,想到既然不可能长期、有效地保护中心免受攻击,那么还不如根本不设中心!

让每一个基地乃至每一台电脑都能独立运作,这么一来等于有了无数中心,敌人除非真的将这个星球炸了,否则其中一个基地或电脑受损,也不影响其他基地或电脑继续发挥作用。

正是这种“非中心化”的思想成为形成互联网最基本的概念。

但是许多技术出现之后往往并不会完全按照原先的设计发展,服务器/客户机的架构逐渐变成了互联网的主流,浏览变成了人们在互联网上最主要的生存方式。

互联网的普通用户似乎在慢慢的退化、和电视观众一样被动地浏览着大网站们创造的内容。

人们在网络上的主要活动访问了在这么门户站点上,读新闻、参与讨论组、聊天和文件传输。

但是这使得设计的互联网的一个特性消失了?

?

如果Yahoo因故中断服务如出现什么情况?

这种假设不太容易看到,但是年初的黑客攻击各大网站造成的混乱似乎可以给我们一点联想的线索。

“边缘”

我们来看看P2P的更多激动人心的东西和消除围绕这个新词的种种误解,以及看看P2P的机会主要在哪儿。

P2P带来的一个变化就是改变了“内容”所在的位置,内容正在从“中心”走向“边缘”,也就是说内容将主要不是存在几个主要的服务器上,而是存在所有用户的个人电脑上。

Napster的成功使我们不得不去质疑流传已久的两个断言,“应用服务提供商ASP是未来趋势”和“个人电脑死了”。

ASP的一个基本假设就是对于大多数客户来说购买和维护高性能的服务器的成本太高了,但是P2P使得每个人办公桌上的电脑都可以成为“服务器”。

用户原来是用台式电脑准备好数据之后再把数据上载到服务器上去,而使用P2P将不再需要这个过程。

“个人电脑死了”这个断言就是个人电脑将主要用来浏览互联网、字处理等,因此最简单的客户机就可以满足需求。

P2P使得个人电脑再一次成为“中心”。

P2P使得个人电脑重新焕发活力、不再是被动的客户端,而成为具有服务器和客户端的特征的设备,个人电脑将重新成为互联网的中心。

互联网的存储模式将由现在的“内容位于中心”模式转变为“内容位于边缘”模式。

从这个角度看P2P带来了几个改变:

首先,客户不再需要将文件上载到服务器,而只需要使用P2P将共享信息提供出去;

其次运行P2P的个人电脑不需要固定IP地址和永久的互联网连接,这使得那些拨号上网的用户也可以享受P2P带来的变革,这部分用户在所有用户中占有极大的比重;

最后,P2P完全改变过去控制互联网的客户机/服务器模式,消除客户机和服务器二者之间的差别。

上文对Napster所遭遇的法律问题有很多讨论,但是换个角度来阐述,盗版问题往往也正显示存在大量未能满足的需求。

Napster的惊人成功(这里指吸引大量用户而不是获得利润)是一种难得的对P2P的概念上可行性的证明,揭示了P2P改变互联网的潜力。

直通桌面的宽带网络逐渐成为现实、个人电脑越来越强大足以胜任“服务器”功能也从另外的方面确保P2P发挥其能量。

个人电脑取代位于中心的服务器成为内容的主要存储地将对互联网的几个主要发展方向有着意义深远的影响:

这可能改变Windows和Linux几年的“战争”的局面,当“桌面”和服务器逐渐融合,微软可能会极力推广其基于Windows2000的Web服务和“内容处于边缘”(内容处于桌面)模式,从而可能破坏Linux在服务器市场上存在的基础。

提供免费个人主页服务的公司存在的一个理由就是目前互联网使得普通用户很难拥有自己的服务器放置自己的内容。

可以预言类似Napster的服务将会出现供人们在自己的个人电脑上发布主页和内容。

WAP等移动服务协议目前还主要关注让人们去使用处于中心的商业服务如新闻、股票信息等。

但更多的时候人们最需要的信息是那些在他们的个人电脑上的信息,P2P使这成为可能。

人们可以通过无线联网P2P访问他们的个人电脑,这也就是一些公司所宣传的个人化P2P(PersonalP2P)的“无线版本”。

当然,这也不是说使用P2P的个人电脑可以取代服务器,那些安全的备份和需要专家来不断更新的数据还将存在于位于中心的服务器上。

可以这样看待P2P带来的转变,“内容位于中心”模式较好的适应了互联网初期的情况,个人电脑性能太差因而需要有专门的服务器、带宽太窄使得个人电脑不得不退化到被动浏览。

宽带互联网、更稳定的更高性能的个人电脑使得我们有理由预言下一个5年将是由“内容位于边缘”模式主导。

1.4重新解读P2P

每个具有划时代意义的创新出现的时候它往往可能被人们误读。

P2P这次也不例外,Napster让人们开始关注P2P,但也使得许多人认为P2P就是歌曲交换、文件交换,甚至认为P2P和盗版有着必然的联系。

可以说人们对P2P的理解是被误导的和不完全的。

自由软件Freesoftware出现之初也面临着误读的困境,人们开始的时候将Free理解为免费的,从而认为自由软件是不可靠的、认为自由软件运动是激进的“反文化的”。

事实上Free更多的应该指自由地探索想法、在软件中表达出来和共享软件。

这一点对自由软件的鼓吹者们来说是自然而然的,但是需要有人去告诉商界、媒体和公众自由软件在经济上和逻辑上是可行的。

当时著名出版人O’reilly组织了一次自由软件峰会重新定义自由软件,将自由软件改名为开放源码软件opensourcesoftware。

这一重新定义使得人们开始拨开误解的乌云,了解Free的本质。

开放源码将人们从有缺陷的软件、锁定效应和传统的软件分发渠道中解脱出来。

自由表示合作将可以跨越公司的边界、共享基础性的开发,使人们可以把注意力集中到高附加值的服务上去。

今年8月,O’Reilly又组织另一次峰会来帮助人们认识P2P的潜力和消除Napster、Gnutella造成的P2P是盗版技术的负面影响。

另外,他认为目前P2P的状态类似于“盲人摸象”,P2P技术的领导者们每个人都看到了P2P这头“巨象”的一些特征。

如果他们能够有机会交流思想,P2P将会更快地发展。

这次P2P峰会主要有三个目的:

定义P2P,我们要从中的到什么以及为什么;描述P2P的机会,P2P能解决什么样的问题;形成一个提供给大众的关于P2P的信息,消除那些负面影响。

参与P2P峰会的有媒体不断报道的那些提供文件交换服务如Napster、Gnutella、Freenet的开发者,也有那些试图挖掘P2P分布计算能力的公司和组织如PopularPower、SETI@home、等的开发者。

后面的三家公司希望使用P2P技术集中那些联接在网络上的电脑的空闲的CPU时间片断、内存空间、硬盘空间来替代“超级计算机”。

其它正在进行的P2P应用还有,IBM、微软、Ariba也在合作开展一个名为UDDI的项目以将B2B电子商务标准化;Eazel正在建立下一代的Linux桌面;Jabber已经开发了一种基于XML、开放的即时讯息标准,Jabber被认为是建立了未来使用P2P数据交换的标准;由LotusNotes的开发者创建的Groove试图“帮助人们以全新的方式沟通”;英特尔也在推广它的P2P技术以帮助更有效地使用芯片的计算能力。

第二章开发环境及实现技术

硬件系统:

奔腾100以上CPU、64M以上内存、1G以上硬盘、光驱。

软件系统:

Windows9x或更高版本、VisualBasic6.0中文版。

微软公司的VisualBasic6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。

VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。

故而,实现本系统VB是一个相对较好的选择。

如同上面的内容所描述的,不论您使用UDP协议或是TCP协议,Winsock控件都可以允许与远程的设备连接,并且在相互之间交换数据。

因此,依据上面的面熟而言,不论您使用的是哪一种协议都可以扮演主机端和客户端的角色。

同时,当您在使用Winsock控件的过程中,这个控件不会显示在正在执行的窗体之中。

换句话说,Winsock控件是在后台运行的一种控件。

在执行过程之中,不会具有任何选用、可见的控件。

那么该如何使用Winsock控件呢?

它可以被应用在那些类型的应用程序之中呢?

以下所列出的内容,是这个控件可以应用的大致范围:

?

将客户端所收集的数据,传送给主机端。

?

聊天和文件传输室应用程序。

?

电子公告栏。

?

voip(voiceoverTCP/ip)

因此,当您希望建立上述类型的应用程序之前,必须要学习如何选用适合的协议类型。

第三章系统设计

1概要设计阶段的主要任务

①系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。

②确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。

确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。

③编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。

选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。

2概要设计的过程

概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。

3概要设计的原则

①将软件划分成若干独立成分的依据。

②如何表示不同的成分内的功能细节和数据结构。

③如何统一衡量软件设计的技术质量。

4系统功能分析

预测开发的点对点聊天和文件传输系统达到的功能如下:

1、服务器端服务

2、客户机服务

3、上网服务

4、点对点实时信息传输

根据以上分析,该系统考虑将整个系统分解成如图3-1模块结构图:

图3-1模块结构图

并且在系统的开发过程中,我尽量注意模块的高内聚、低耦合,使得系统的整体性能提高,并且也有利于投入使用后的系统维护。

1详细设计的任务

详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。

主要任务如下:

①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;②确定每一模块使用的数据结构;③确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。

④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

2详细设计的方法

程序流程图、N-S图、PAD图、IPO图

本系统在开发过程中所采用的详细设计方法为IPO图:

客户机模块IPO图:

服务器模块IPO图:

第四章系统的实现

 

2、主界面:

编辑界面:

主要通过菜单方式实现:

主要代码:

PrivateSubclt_Click

EndSub

主要作用:

调客户机窗体。

PrivateSubForm_Load

Frmmain.Top100

Frmmain.Left100

ShockwaveFlash1.Top0

ShockwaveFlash1.Left0

 

Image1.Left0

RandomizeTimer

kkIntRnd*10+1

ShockwaveFlash1.MovieApp.Path&"\pic\"&"3dquan.swf"

Image1.PictureLoadPictureApp.Path&"\pic\djc"&kk&".jpg"

EndSub

主要作用:

设置FLASH及IMAGE的大小及在IMAGE中随机产生一幅图片。

PrivateSubmyie_Click

EndSub

主要作用:

调用上网窗体。

PrivateSubser_Click

EndSub

主要作用:

调用服务器窗体。

PrivateSubfilecli_Click

DimjAsInteger

jShellApp.Path&"\filecs\Client\Client.exe",vbNormalFocus

EndSub

主要作用:

通过shell打开文件传输客户机程序。

PrivateSubfileser_Click

DimjAsInteger

jShellApp.Path&"\filecs\server\server.exe",vbNormalFocus

EndSub

主要作用:

通过shell打开文件传输服务器端程序。

 

1、流程图:

2、运行界面:

3、主要代码如下:

PrivateSubCommand2_Click

UnloadMe

EndSub

主要作用:

下载窗体。

PrivateSubForm_Load

txtreceive.Text""

txtsend.Text""

Winsockserver.LocalPort10001

 

EndSub

主要作用:

设置Winsockserver的端口。

并使Winsockserver处于侦听状态。

PrivateSubgetinfo_Click

 

EndSub

主要作用:

修改接收到的信息的颜色。

PrivateSubsendinfo_Click

 

EndSub

主要作用:

修改发送的信息的颜色。

PrivateSubtxtsend_Change

ElseMsgBox"还没有客户机远程连接!

"

EndIf

EndSub

主要作用:

检查有没有客户连接,如果没有则没有好开始发送信息。

PrivateSubWinsockserver_ConnectionRequestByValrequestIDAsLong

Winsockserver.AcceptrequestID

EndSub

主要作用:

接收连接请求。

PrivateSubWinsockserver_DataArrivalByValbytesTotalAsLong

DimmystrAsString

Winsockserver.GetDatamystr

txtreceive.Textmystr

EndSub

主要作用:

在文本框中显示接收到的信息。

1、流程图:

2、运行界面

当连接成功后:

主要代码:

PrivateSubCommand1_Click

 

EndSub

主要作用:

通过Winsockc.Connect进行连接。

PrivateSubCommand2_Click

UnloadMe

EndSub

PrivateSubForm_Load

txtreceive.Text""

txtsend.Text""

Winsockc.RemotePort10001

EndSub

主要作用:

通过Winsockc.RemotePort10001设置远程端口号。

PrivateSubget_Click

 

EndSub

PrivateSubsend_Click

 

EndSub

PrivateSubtxtsend_Change

IfWinsockc.RemoteHost""Then

ElseMsgBox"请先进行连接再发送信息!

"

EndIf

EndSub

主要作用:

设置发送信息的内容。

PrivateSubWinsockc_Connect

MsgBox"连接服务器成功!

您可以聊天和文件传输喽!

",vbInformation

E

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1