计算机专业毕业设计论文.docx
《计算机专业毕业设计论文.docx》由会员分享,可在线阅读,更多相关《计算机专业毕业设计论文.docx(35页珍藏版)》请在冰豆网上搜索。
![计算机专业毕业设计论文.docx](https://file1.bdocx.com/fileroot1/2023-1/15/5da9c972-9608-40f5-8cd1-27aed03b0a81/5da9c972-9608-40f5-8cd1-27aed03b0a811.gif)
计算机专业毕业设计论文
2009年度本科生毕业论文(设计)
局域网即时通信软件的设计与开发
院-系:
工学院 计算机科学与技术系
专业:
计算机科学与技术
年级:
2005级
*******
学号:
************
导师及职称:
李俊生 (教授)
2009年6月
2009AnnualGraduationThesis(Project)oftheCollegeUndergraduate
LANinstantmessagingsoftwaredesignanddevelopment
Department:
CollegeofEngineeringComputerScienceandTechnologyDept.
Major:
ComputerScienceandTechnology
Grade:
2005
Student’sName:
LiZhongLin
StudentNo.:
200503050417
Advisor:
ProfessorLiJunSheng
June,2009
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解红河学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
毕业论文(设计)答辩委员会(答辩小组)成员名单
姓名
职称
单位
备注
主席(组长)
摘要
随着计算机的普及和Internet的飞速发展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在部分人的生活中已经必不可少,目前,在网络上新流行的通信软件有MSN,UC,阿里旺旺,诚信通,mycool甚至有的网络通信软件可以发送手机短信,可谓网络通信软件百家争鸣,各有千秋,即便这样,像QQ,MSN这样的老牌网络通信工具仍然是大部分网民的首选,特别是局域网内的通信软件IP信使,它自从1996年问世以来,一直受到各大企业单位和学校机房的青睐。
因此通过研究IP信使的通信协议来实现局域网即时通信软件的人越来越多。
本软件就是通过分析了IP信使部分通信协议,利用delphi7.0编程工具编写的局域网即时通信软件。
开发时使用了delphi7.0中的INDY组件里的UDP控件来实现用户上下线和文字聊天,其中,用户上下线主要是利用UDP广播机制来实现的。
使用INDY组件里的UDP控件和TCP控件来实现文件的传送,其中UDP控件用来处理文件收发应答,TCP控件用来建立安全可靠的文件流数据传输通道,保证文件发送的完整性。
软件主要实现了用户注册、文字聊天、文件传送、用户身份验证、视频播放、MP3播放等功能,同时,信息的传送具有不需要中心服务器的特点,实现了局域网内点对点的信息传输。
本软件从需求分析、软件的设计、具体功能的实现都严格遵循了软件设计工程的思想。
关键词:
聊天;文件传送;用户身份验证;Delphi7.0;UDP;TCP;
Abstract
WiththewidespreadofcomputerandrapiddevelopmentofInternet,humanhascomeintotheinformationage,nomatterwherepeopleare,theycancommunicatewitheachotherandexchangeinformationthroughtheNetWorkCommunicationssoftwarearequitenecessarytoapartofpeopleintheirlifeAtpresent,anewepidemicintheMessengerCommunicationssoftwarewithMSN,UC,AliWangwang,Chengxintong,mycool,andevensomecommunicationsoftwarecansendSMS,networkcommunicationsoftwareisahundredschoolsofthought,isdifferent,evenso,suchasQQ,thiscommunicationtoolsoftheoldBrandisstillthefirstchoiceformostusers,especiallywithinthelocalareanetworkcommunicationsoftwareIPmessenger,whichsinceitsdesignedin1996,hasbeenthemajorbusinessunitsandschoolsintheComputerroomofthepopular.,thereforemoreandmorepeopleachieveLANinstantmessagingsoftwarethroughanalyzingIPmessenger'scommunicationprotocol.
ByanalyzingpartoftheIPmessengercommunicationprotocol,usingtheprogrammingtoolsnameddelphi7.0prepareLANinstantmessagingsoftware.Delphi7.0usedtodeveloptheINDYcomponentsintheUDPtoachieveusercontrolandtextchatonline,inwhichusersontheuplineanddownlinearetouseUDPbroadcastingmethodtoachieve.INDYcomponentsusedintheUDPandTCPcontroltoachievecontrolofdocumentflow,whichcontrolsUDPresponsetodealwithdocuments,TCPcontrolsusedtocreatesecureandreliabledatatransmissionstreamchannel,andensuretheintegrityofdocumentssent.Themainachievementofthesoftwaretheuserregistration,textchat,filetransfer,userauthentication,videoplayer,MP3playerandotherfunctionsatthesametime,thetransmissionofinformationdoesnotrequireacentralserverwiththecharacteristicsofaLANpeer-to-peermessaging.Thesoftwarefromtheneedsanalysis,softwaredesign,therealizationofspecificfunctionsarestrictlyfollowedtheideaofsoftwareengineeringdesign.
KeyWords:
chat;filetransfer;IDauthentication;Delphi7.0;UDP;TCP
第一章引言
1.1开发的目的
随着计算机的普及和Internet飞速发展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在部分人的生活中已经必不可少。
比如QQ、YahooMessage等等这些都是大家比较喜爱的聊天工具。
然而我们在使用这些聊天工具时都要登陆服务器,这对于在一个局域网内的用户们交换信息,传送文件不太方便,原因是:
1).登陆服务器时麻烦的操作,2).假设局域网没有联网或者网络故障不能连接英特网,QQ、YahooMessage等通信工具就失去了意义。
本次局域网即时通信软件的设计就是针对局域网内的用户即时通信而开发的。
1.2开发平台简介
使用Delphi7.0作为开发工具。
Delphi是Borland公司研制的可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。
它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。
Delphi它提供了100多个可供使用的构件,利用这些部件,可以快速地构造出应用系统。
Delphi7.0在保持原有版本优点的基础上增加了很多更新更强的新特性,主要改进有:
扩大了VCL(VisualComponentLibraris)可视化组件库;对编辑器和编译器方面做了更多改进和优化;增加了多种网络应用开发的控件包如Indy和Web编程技术;完全支持.NET技术及XML技术等;支持跨平台开发类库CLX。
在本次设计中,主要使用控件包Indy中的网络控件来实现聊天和文件传送等功能。
1.3软件运行平台
硬件环境:
处理器:
PIII1G以上;
内存:
128M以上;
硬盘:
10G以上可用磁盘空间;
网络适配器:
10/100M自适应网卡。
软件环境:
操作系统:
Windows2000以上版本
网络要求:
局域网内
第二章需求分析
2.1可行性分析
局域网通信软件是网络通信软件的一个重要分支,它的主要功能就是实现局域网内的信息传递,信息传递包括了文字信息传送和文件传送两大基本功能。
目前,局域网通信软件大概可以分为两类,第一类是居于中心服务器的,所谓基于中心服务器就是,两台或多台计算机通信时,必须经过同一个服务器对双方的信息进行转发,这样的模式易于管理所有的客户端,但这就需要一台计算机来做服务器对所有的客户端信息进行转发,所有客户端在使用时必须登陆服务器,对于小型的局域网来说,中心服务器模式的通信软件在使用时是比较麻烦的,同时服务器的开销也是一笔不小的开支。
第二类无需中心服务器,这类局域网通信软件是基于分散式服务器模式,它在信息传递时既是服务器又是客户端,局域网内的每台计算机网络负载均衡,用户在使用它时不需登陆服务器,极为方便。
本软件基于分散式服务器模式,在设计时,选用Delphi7.0作为开发工具,Delphi7.0的网络控件提供了大量的网络控件,它们封闭了复杂的具体实现细节,因此使用Delphi7.0来开发局域网通信软件是很方便的。
早在1996年,局域网即使通信软件的代表IP信使就已经问世,时隔13年的今天,IP信使仍然深受各大企业、单位、高校计算机机房的喜爱,因此,无论从技术角度还是软件的实用性方面来讲,基于分散式服务器模式的局域网即时通信软件的设计是可行的。
2.2功能需求分析
本人通过对现有的局域网通信软件(IPMSG和LanTalk.Net等即时通信软件)的使用和分析后,总结出用户对于局域网通信软件的基本功能需求,因此局域网即时通信软件的功能要符合用户的要求就必须实现以下三个基本功能:
2.2.1聊天(文字传送)
聊天是局域网通信核心的部分,用户聊天时,都不会喜欢复杂的操作,在设计时尽量使聊天功能的操作简单化,实用化。
通常,局域网聊天软件都会有一个用户列表,用户在点击列表中的用户名后,就可以和对方聊天。
当然,局域网内广播消息也是必不可少的一个功能,因此要实现聊天功能首先要解决的问题就是用户上线,下线,之后还要考虑到双方聊天时的通信安全。
2.2.2文件传输
文件传输使局域网通信软件变得更有价值,聊天功能只能实现文字的传送,但文件传输的功能就可以实现,各种文件的传送,使用户之间的信息交流更具现实意义。
为此,在实现这一功能时要解决的问题就是传输瓶颈,实现大文件的传送,和高速传输。
2.2.3用户身份验证
在本次的设计中,信息的安全措施可以采用本地验证的方式(向对方用户发送身份验证,对方收到验证消息后输入对方注册的用户名的密码进行验证,验证成功则向消息验证主动方发送验证成功的消息,验证失败则返回一条验证失败的消息给消息验证主动方)这样身份验证在局域网内能保证信息的安全。
在实现上述主要功能后,还要考虑到增加一些附加功能,比如音乐播放功能和视频播放功能,这样,用户在进行通信的时候也可以听音乐,看电影,即使户没有使用通信功能,也可以把它当做播放器来使用。
2.2界面描述
界面不仅仅是软件的外衣,最重要的是能让用户快速上手。
复杂的操作界面会使用户难以接受,相反,简单而美观的操作界面会让用户爱不释手,这就是为什么很多用户喜欢windows操作系统的原因。
局域网即时通信软件的操作界面,界面简洁,直观,操作简便。
第三章软件的设计
3.1功能模块的设计
图3-1软件功能模块
3.1.1用户IP列表的设计
如果说聊天模块是局域网即时通信的核心,那么用户列表就是局域网即时通信的核心的核心,因为当我们要发送消息和传送文件的时候必须要确定接收方是谁,必须知道接收方的IP地址。
软件启动后就必需完成用户上下线的功能,上线用户信息包括用户名和所属的计算机的IP地址,这两个用户信息在界面中的“用户IP列表”中显示出来,这样,用户就可以知道有哪些用户在线,这些用户的计算机IP地址是多少,此外,文件的发送也需要“用户IP列表”。
因此在实现聊天功能前就要先实现用户的上线这个最基本的功能。
实现用户上下线的流
程如下:
图3-2上下线的流程
A机软件启动后自动获取本机地址和用户注册名以500毫秒为间隔向局域网广播,B机软件处于启动状态自动接收到A机软件发送的A机地址和用户名后存入“用户IP列表”。
A软件关闭时广播下线消息,B机软件接收到A机下线消息后在IP列表框内删除对应用户名和IP。
3.1.2聊天模块的设计
实现了用户上线功能后,就可以进行聊天模块的设计了。
在delphi7.0中的INDY组件里有两组控件即(UDPclientUDPserver)和(TCPclientTCPserver),(UDPclientUDPserver)这组控件基于UDP协议,由于考虑到TCP的对系统资源的要求较高,而UDP对系统资源的要求低,它的协议非常精简且发送包的速度快,所以我选用了(UDPclientUDPserver)这组控件来实现聊天模块的客户端和服务端,以下是聊天消息接收和发送的流程:
图3-3聊天消息接收和发送流程
A机软件启动UDP服务端自动设置端口号、UDP客户端自动设置端口号后处于信息接收、信息发送就绪状态,B机软件处于启动状态并且B机的UDP客户端将所发送的目的IP设置为A机IP,此时用户在消息输入框输入要发送的消息点击发送按钮后,B机UDP客户端将所发送的消息打包发送至A机,A机的UDP服务端自动接收来自B机的数据包放到缓存,然后判断软件是否托盘,如果B机软件处于托盘状态,则判断是否进行托盘免打扰设置,如果否,那么B机软件就会弹出一个消息提示提醒用户有新消息,接下来再判断接收到的消息是否被加密,如果是,则解密收到的消息并显示,如果否直接显示消息。
在聊天模块中,消息的广播功能是不可缺少的,消息广播的实现和一对一消息收发的原理基本一致,不同的是,当用户选择消息广播功能时,消息发送的目的IP是该局域网里的广播地址。
3.1.3文件传送模块的设计
文件传输的实现比聊天功能的实现更具难度,在聊天功能时,使用的协议是UDP,而且delphi中的UDP控件在使用时也很简单,很方便,然而实现文件传输时,就要同时用到(UDPclientUDPserver)和(TCPclientTCPserver)这两组控件,除此之外,文件传送的协议还必须自己写,以下文件传输过程:
图3-4文件传输流程
当A机向B机发送文件的同时,A机向B机发送一条询问消息(是否接收),
此时B机弹出文件保存框,如果点击取消,B机向A机发送一条消息(拒绝接收),A机接收到消息“拒绝接收”后取消发送。
如果B机文件保存框的“保存”按钮被点击,B机向A机发送一条消息(请求接收),A机接收到B机的“请求接收”消息后向B机发送消息(将要发送),B机接收到消息“将要发送”向A机发送消息(准备接受),A机收到“准备接受”后就开始向B机传送文件和文件的长度,在文件传送的过程中,如果B机点击“取消”按钮,B机则向A机发送一条消息(取消发送),A机接收到“取消发送”消息后立即停止发送操作并清空缓存。
如果没有B机的“取消按钮”没有被点击,A机继续传送文件,B机继续接
收文件,文件传送完毕后A机向B机发送一条消息(文件传送结束)。
3.1.4用户身份验证模块的设计
本设计的用户身份验证采用本地验证的方式,它的功能主要实现的是:
用户A向用户B发送身份验证消息,这条消息包含有用户B的用户姓名,当B机收到A机发送的请求验证消息后,在B机用户注册信息中查找用户B的姓名,如果用户B的姓名存在,那么,B机把用户B的密码取出,放入一个变量中等待用户B输入密码并点击“确定”,如果用户B输入密码并点击了确定,此时变量中的密码将与用户B输入的密码进行比较,如果两个密码一致,B机向A机发送一条消息(验证成功),如果两个密码不一致,B机向A机发送一条消息(验证失败,密码错误),如果变量为空,B机向A机发送一条消息(验证失败,用户没有注册)。
以下是用户身份验证的流程:
图3-5用户身份验证的流程
3.2软件操作界面的设计
软件的界面美观与否虽然不能体现软件的质量和功能,但不美观的界面总会给用户不好的第一印象。
同时,用户的审美观是不一致的,因此在设计界面时使用VclSkin制作了8种风格的界面可供用户选择,在操作方面,尽量使操作界面简洁,并且使用提示帮助用户进行正确操作,以下是XP风格的部分界面截图:
图3-6软件操作主界面
图3-7用户注册界面图3-8密码修改界面
图3-9用户名自动登录设置界面图3-10视频播放界面
图3-11程序最小化托盘界面
第四章模块的实现代码
4.1用户列表的实现代码
此代码实现用户上下线功能,其流程图为图3-2
procedureTFormmain.udpsr2UDPRead(Sender:
TObject;AData:
TStream;
ABinding:
TIdSocketHandle);
var
comm2:
TcommBlock2;//TcommBlock2为记录型
userlt,
temp,iplt:
string;
i:
Integer;
begin
AData.ReadBuffer(Comm2,AData.Size);//从Comm2读取数据
ifcomm2.downlineflag='downline'then
begin//如果字符数组comm2中的downlineflag值为downline
userlt:
=comm2.name;//把comm2.name存入变量userlt
iplt:
=comm2.ip;//把comm2.ip存入变量iplt
temp:
=userlt+''+#9+''+iplt;
fori:
=0tolstip.Items.Count-1do
begin
iflstip.Items.Strings[i]=tempthen
begin//temp里面是已经下线了的用户名和用户IP
lstip.Items.Delete(i)[4];//如果ip列表中有和temp相同的值就删除(收到对方下线广播,删除对应的用户名和用户IP)
ifuserlt<>''then
begin
mmoresv.Lines.Add('地址为'+'['+iplt+']'+'''
的用户'+'['+userlt+']'+'在'+edttime.Text+'时下线');//提示对方下线
lbluplinecount.Caption:
=IntToStr(strToint(lbluplinecount.Caption)-1);//在线人数-1
end;
end;
end;
endelse
begin
userlt:
=comm2.name;
iplt:
=comm2.ip;
iflstip.Items.IndexOf(userlt+''+#9+''+iplt)=-1then//避免IP列表中的IP重复的判
begin
lstip.Items.Add(userlt+''+#9+''+iplt);
end;
end;
end;
4.2聊天消息收发流程的实现代码
此代码实现聊天消息收发流程,其流程图为图3-3
procedureTFormmain.btnsendClick(Sender:
TObject)[1];//聊天消息发送的过程
var
Comm:
TCommBlock;//记录型数组的定义
begin
ifudpct1.Host=''then
begin
ShowMessage('请选择聊天的对象');
keybd_event(VK_BACK,0,0,0);//退格
end
else
begin
ifchk2.Checked=Falsethen
begin
Comm.SenderName:
='【'+GStack.LocalAddress+'】'+'【'+edtname.Text+'】';
Comm.Msg:
=mmosend.Text;
Comm.flag:
='';
ifComm.Msg=''then
begin
ShowMessage('发送消息为空,请输入您要发送的消息');
keybd_event(VK_BACK,0,0,0);
end
else
begin
m