基于p2p的网络视频聊天系统的设计与实现本科毕业论文Word下载.docx
- 文档编号:3213695
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:28
- 大小:321.89KB
基于p2p的网络视频聊天系统的设计与实现本科毕业论文Word下载.docx
《基于p2p的网络视频聊天系统的设计与实现本科毕业论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于p2p的网络视频聊天系统的设计与实现本科毕业论文Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
软件学院
软件工程
学生姓名:
学号:
指导教师(职称):
)
评阅教师:
完成日期:
2011年5月
南阳理工学院
NanyangInstituteofTechnology
软件工程专业
[摘 要]随着互联网技术的飞速发展,基于网络的即时通信给人们带来诸多便利,也成为当今网络应用的主流。
聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流,比如腾讯公司的QQ聊天软件。
本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输、视频交流等功能的聊天软件。
本设计的开发采用P2P结构,在基于.NET开发环境下,使用C#编程语言进行本软件的开发。
本文首先论述国内外聊天工具的发展情况和现今的发展方向,并对开发环境和开发语言进行了简单介绍;
对本设计所要开发的多功能聊天软件作了较为详细的需求分析,并给出了多功能聊天软件的设计方案,主要功能包括文字聊天、文件传输、语音聊天及视频聊天等;
本毕业设计主要实现的是多功能聊天软件的部分功能,文字聊天、视频聊天等功能,主要实现文字聊天视频聊天功能,达到预期目标;
通过运行、测试与分析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。
[关键词]视频;
聊天;
P2P模式;
C#
SoftwareEngineering
LIYi—Tong
Abstract:
WiththerapiddevelopmentofInternettechnology,theinstantmessengerbasedonnetworkbringsmanyconveniencestothepeople,alsobecomesthefocusofnetworkapplicationinpresent.Chatisoneofthemostwidespreadinstantmessengers,mayfacilitatethepeopletocarryontheonlineinformationexchangeatanytimeandanywhere,suchastheQQchatsoftwareofTencentCompany.Developschatsoftware,whichincludesthewriting,filetransfer,audioandvideochatandsoon.
ThisdesigndevelopmentusestheP2Pstructure,usestheC#programminglanguagetocarryondevelopingthissoftwarebasedon.NETenvironment.Thispaperfirstelaboratesthedevelopmentsituationofdomesticandforeignchatstoolandthedevelopmentdirectionnowadays,andhascarriedonthesimpleintroductiontothedevelopmentenvironmentandthedevelopmentlanguage.Thedemandofmulti-functionchatsoftwareisanalyzedindetail,anditsplanisprovided.Itsmainfunctionsincludethewriting,filetransferandvideochatandetc.Thisgraduationprojectmainlyrealizesthepartialfunctionsofmulti-functionchatsoftware,namelytheaudiochat,thevideochatandsoon,whichmainlyrealizesthewritingandchatandvideochat.Finally,thissoftwareachievestheanticipatedtarget.Throughtherunning,thetestandanalysis,itshows,thismulti-functionchatsoftwareisstable,reliable,andhassomepracticalvalues.
Keywords:
Video;
chat;
P2P
model;
C#
1引言
1.1课题背景
随着互联网技术的发展,互联网应用越来越丰富。
互联网以其独特的传播方式吸引了大量用户,同时也给人们带来了许多便利,譬如可以借助于网络进行相互交流、信息传递等。
聊天工具作为互联网中运用最为广泛的通信工具之一,它可以让用户之间进行即时的交流和信息的传递。
聊天工具的出现可以说是基于互联网通信交流方式的历史性变革,它已经渐渐取代了原来效率低、费用高的如信件、电报的通信方式,以其快速、交互、简便的方式给用户的交流提供了简单、易用的信息平台,成为现今应用最为广泛的即时通信工具之一。
随着相关技术的日益发展,用户对功能的需求不断提高。
为了更好地服务于用户,聊天工具的功能也在不断地完善。
在未来的网络时代中,聊天工具将以即时通信为其基本特点,并与各种网络应用整合,同时随着无线网络的广泛应用,它将成为未来不可缺少的一种通信软件。
1.2国内外研究现状和发展趋势
通过对国内外关于对等网络的技术文章进行分析,利用P2P技术对网络连接方式和结构的设计研究主要是如何在互联网上实现点对点的连接,如何充分利用互联网上的各种资源,将互联网从一个基于文件的网页和电子邮件网络转变成一个动态的、颗粒状的网络。
而在运用P2P技术针对局域网不同主机之间进行通讯的技术文章还是比较少,虽说在局域网实现点对点连接比起在互联网是简单的多,但是也不能够忽略局域网每台计算机对网络资源共享的愿望,特别是在没有服务器的情况下。
不过技术是不分大小的,我们还是可以借鉴P2P技术在互联网上的应用。
P2P技术的发展以及P2P与网格技术的结合,影响了整个计算机网络的概念和人们的信息获取模式,真正实现了“网络就是计算机,计算机就是网络”。
它提供了很多吸引人的特性,比如自主性(self-organization)、负载平衡(load-balancing)、有效性(availability)、容错冗余(faulttolerance)和匿名(anonymity)等。
P2P引导网络计算模式从集中式向分布式偏移,也就是说网络应用的核心从中央服务器向网络边缘的终端设备扩散。
这使人们在Internet上的共享行为被提到了一个更高的层次,使人们以更主动深刻的方式参与到网络中去。
1.3本课题研究的意义
在当今信息时代,信息通信已成为这个世纪必不可少的组成部分,随着互联网技术的发展,聊天软件作为即时性通信工具的主流,已被越来越多的人所喜爱。
在中国,上
网的用户几乎都用腾讯QQ进行聊天。
当前腾讯QQ的注册帐户已经超过4.3亿,是中国用户最多、最为流行的聊天工具。
起初的QQ只支持文字聊天,随着相关技术的发展,腾讯QQ也不断的自我完善,增加众多实用的、人性化的功能,得到了许多用户的支持与喜爱。
现如今腾讯公司已经初步完成了面向在线生活产业模式的业务布局:
构建了QQ、QQ.com、QQ游戏以及QQ移动手机门户这四大网络平台,形成了规模巨大的网络社区。
在满足用户信息传递与知识获取需求方面,拥有QQ.Com门户、QQ即时通讯工具以及年初收购的Foxmail电子邮件等;
在满足用户群体交流和资源共享方面,腾讯推出的个人博客Q-Zone将与访问量极大的论坛、聊天室、QQ群相互协同;
在满足用户个性展示和娱乐服务方面,腾讯拥有非常成功的虚拟形象产品QQshow、QQpet(宠物)和QQGame(游戏)QQMusic/Radio/LiveTV(音乐/电台/电视直播)等,另外对手机用户提供了彩铃、彩信等无线增值业务;
在用户的交易需求方面,专门为腾讯用户设计开发的C2C电子商务拍卖网已经上线,并和整个社区平台无缝整合。
像QQ这样聊天工具已经逐渐适应了时代的发展,市场的需求,给人们提供了全方位的信息服务平台,使用户在互联网上的生活更加丰富多彩,它不仅带来了巨大的商业价值,而且也给人们的生活带来了无比的欢乐与便利。
1.4小结
随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。
即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。
为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。
本文主要对聊天软件的语音聊天和视频聊天等相关功能的实现原理进行了研究。
本文首先对聊天软件的发展以及其对人们的生活有何影响作了简述,并对开发环境和工具进行了相应说明并对此聊天软件系统进行了较为详细的分析;
进而提出了该多功能聊天软件的设计方案。
2技术分析
2.1运行环境
操作系统:
WindowsXPwindows2003Server或者windows2003Server
数据库:
mySQL
开发工具:
VisualStudio2008
2.2P2P技术
P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义[1]。
这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。
目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。
简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。
P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。
P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。
P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。
基于P2P技术的局域网聊天工具,我们把该软件命名为“TopTalk”。
它的主要作用是实现同在一个局域网上的每个用户之间进行即时通讯.“TopTalk”是一个建立在纯P2P模型下的聊天工具,所以完全不用额外的服务器支持就可以进行点对点通讯,使用起来也非常方便。
它采用了基于UDP网络的传输协议进行底层的消息传送,在此基础上用广播消息实现上下线提示和聊天室功能,点对点的消息实现两人之间的聊天通讯[1]、
2.3TCP协议
在因特网中,TCP层是位于IP层之上,应用层之下的运输层。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。
之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);
如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
TCP用一个校验和函数来检验数据是否有错误;
在发送和接收时都要计算校验和。
在TCP特点中,我们知道客户端只能和服务器通信,无法和另一个客户端直接通信,所以,所有的客户一律先把聊天信息发送给服务器,并告诉服务器该信息发送给哪个客户的。
服务器收到信息后,再将该信息“转发”给另一个客户。
TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。
应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物
理介质,最后到接收方[2]。
2.4UDP协议
用户数据报协议UDP(UserDataProtocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。
比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的。
例如,在默认状态下,一次“ping”操作发送4个数据包。
大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。
这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。
正因为UDP协议没有连接的过程,所以它的通信效率高;
但也正因为如此,它的可靠性不如TCP协议高[3]。
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。
因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务。
2.5TCP/IP体系结构
TCP协议和IP协议指两个用在Internet上的网络协议(或数据传输的方法)。
它们分别是传输控制协议和互连网协议。
其中TCP是提供传输层服务,而IP则是提供网络层服务。
IP:
网间协议(InternetProtocol)负责主机间数据的路由和网络上数据的存储。
同时为ICMP,TCP,UDP提供分组发送服务。
用户进程通常不需要涉及这一层。
ARP:
地址解析协议(AddressResolutionProtocol)此协议将网络地址映射到硬件地址。
RARP:
反向地址解析协议(ReverseAddressResolutionProtocol)此协议将硬件地址映射到网络地址
ICMP:
网间报文控制协议(InternetControlMessageProtocol)此协议处理信关和主机的差错和传送控制。
TCP:
传送控制协议(TransmissionControlProtocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。
它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。
(注:
大多数网络用户程序使用TCP)
UDP:
用户数据报协议(UserDatagramProtocol)这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。
FTP:
文件传输协议(FileTransferProtocol)允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另一主机相互通信。
SMTP:
简单邮件传送协议(SimpleMailTransferProtocol)SMTP协议为系统之间传送电子邮件。
TELNET:
终端协议(TelnetTerminalProcotol)允许用户以虚终端方式访问远程主机。
HTTP:
超文本传输协议(HypertextTransferProcotol)。
TFTP:
简单文件传输协议(TrivialFileTransferProtocol)
2.6TCP协议与UDP协议的比较
TCP协议与UDP协议特点的比较
首先,TCP是一种面向连接的协议,而UDP是无连接的。
这其中的区别在于:
第一,TCP协议是以连接作为协议数据的最终目标的。
UDP协议则是以目标端口作为协议数据的最终目标。
因此,TCP的协议端口是可以复用的,UDP协议的端口在同意时间只能为一个应用程序所用。
第二,一个连接是由两个端点构成的。
要使用TCP进行通信必须先在通信双方之间建立连接,连接的两端必须就连接的一些问题进行协商(如最大数据段长度、窗口大小、初始序列号等),并为该连接分配一定的资源(缓冲区)。
UDP协议则不需要这个过程,可以直接发送和接收数据。
其次,TCP提供的是可靠的传输服务,而UDP协议提供的是不可靠的服务。
使用不可靠的服务进行传输时,数据可能会丢失、失序、重复等。
而可靠的服务能保证发送方发送的数据能原样到达接收方。
最后,TCP提供的是面向字节流的服务。
应用程序只需将要传输的数据以字节流的形式提交给TCP协议,在连接的另一段,数据以同样的字节流顺序出现在接收程序中。
而UDP协议的传输单位是数据块,一个数据块只能封装在一个UDP数据包中[10]。
2.7摄像头采集
本系统利用avicap32.dll和User32.dll完成摄像头的视频采集。
avicap32.dll和User32.dll是WindowsAPI应用程序接口的相关模块。
avicap32.dll接口可以方便地对摄像头和其他视频硬件进行AVI电影和视频的截取[10]。
2.8小结
我们项目的需求是可以在局域网内实现方便快捷的通讯和资源共享,搭建一个完善的聊天环境。
在局域网内实现点对点的聊天并不是一件难事,在现有的网络协议UDP、TCP/IP和Socket的支持下都可以轻易的实现通讯。
而重点解决的问题是如何在没有固定服务器的环境下营造一个完整的和可知的通讯环境,局域网内的每一个用户可以知道其他用户的上下线情况和有选择的进行通话。
目前,在局域网内有一个方法是最适合用来实现上下线功能的,那就是用广播的方式,所有用户都固定一个端口来处理广播或UDP数据,这样就可以在这个端口上进行底层的消息互通了。
当前,P2P技术已经趋向成熟,它的几个特点(没有传统的服务器概念、可扩展性好、完全对称)都非常切合软件开发的思路。
3系统设计
3.1系统目标
根据用户对聊天系统的要求,本聊天软件可以实现以下目标:
(1)用户管理
(2)当有用户登录时会在客户端在线用户中添加显示出来
(3)当有用户下线时会从客户端在线用户中删除其信息
(4)实现客户端间的文本聊天
(5)实现客户端间的视频聊天
(6)实现聊天记录的保存
3.2主模块
主模块设计如表3-1所示:
表3-1主模块设计
模块
子模块
功能
主模块
整体设计总界面
对系统的功能认知
3.2.1功能模块
功能模块设计如表3-3所示:
表3-3功能模块设计
文本聊天模块
1.发送信息
2.接受信息
3.查看信息
视频聊天模块
1.发起视频
2.接收视频
3.视频传输
4.终止视频
用户管理模块
1.IP地址显示
2.聊天记录查看
3.聊天记录删除
3.3系统功能模块图:
系统设计功能模块图如图3-1所示:
图3-1系统功能结构图
3.4系统流程分析
系统流程分析如图3-2
3-2系统流程分析图
聊天系统流程图,如图3-3
3-3流程图
此系统采用了P2P结构,系统流程图如上图所示,使用此视频聊天系统不需要注册,其信息的发送是通过必须要知道对方的IP地址和监听端口,在P2P中,各个对等节点可以随时加入,随时离开,对等节点的连接时间和IP地址并不一定是固定的。
在完成对等节点定位和资源搜索之后,就可以用UDP发送文字聊天,使用UDP无需建立连接,直接可以在对等节点之间通信。
客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。
若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。
若服务器端拒绝连接,则释放Socket连接并关闭网络流。
若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,
3.5视频模式的设计
视频数据的发送与接收同样采用了Socket编程,在发送视频时,通过Socket端口进行监听。
当收到对方发送的包含视频请求信息和对方IP地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。
用户1通过摄像头进行视频采集,经过压缩后,向用户2发送采集后的视频数据。
用户2接收到用户1发送的视频数据并将其进行解压,然后在用户2的采集窗口上播放,这样视频的传输就完成了。
如图3-4:
3-4视频模块数据传输流程图
在进行视频数据传输前,两台计算机必须先要建立连接,其原理和语音聊天建立连接的原理一致。
用户1向用户2发送视频请求,用户2在接收到用户1的请求后,给用户1发送收到请求后的回应信息,如果同意用户1的请求则用户1与用户2开始视频聊天,如果不同意就终止视频聊天。
3.6文本聊天的设计
3-5文本聊天流程图
开启服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。
收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器可以选择接受或者拒绝客户端的连接。
若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。
客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事
件为Enable。
通信双方就可以进行文字聊天了。
流程如图3-5所示。
3.7用户注册和解析
3-6PNRP名称解析基本过程
P2P架构中的每个对等节点为了能被其他对等节点识别,首先要将自己注册到一个群中。
名称解析即为获取具有指定对等名的其他对等节点使用的IP地址和端口号的过程。
PNRP中没有使用索引服务器,为了完成解析,群中的每个对等节点都存储一些PNRPID的缓存条目。
PNRP缓存中的每个条目都含有PNRPID及应用程序的IP地址和端口号。
寻找对等点目标是否在Catch中,如果否想最邻近的邻居发送搜索请求,然后目标是否在Catch中,如果是返回响应给请求节点,如果否,搜索是否更接近目标节点,如果否驳回请求发搜寻请求到目标节点的次临近节点,如果是到下一站发送搜索请求,检查目标是否在Catch中。
基本过程如图3-6所示。
3.8数据库设计
根据需求分析,需要以下两张表对系统所需要的数据进行存储,如图3-3,图3-4:
3-3用户基本信息
1
表名
用户基本信息表
序号
字段名
数据类型
缺省值
NULL
键值
备注
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 p2p 网络 视频 聊天 系统 设计 实现 本科毕业 论文