基于VC的局域网聊天室毕业设计论文.docx
- 文档编号:25581084
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:60
- 大小:327.76KB
基于VC的局域网聊天室毕业设计论文.docx
《基于VC的局域网聊天室毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于VC的局域网聊天室毕业设计论文.docx(60页珍藏版)》请在冰豆网上搜索。
基于VC的局域网聊天室毕业设计论文
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
摘要
随着计算机科学和Internet的飞速发展,网上聊天已成为人们相互交流的一种方式,与E-mail、电话相比,聊天服务更具有实时性和有效性。
本项目采用软件工程的方法,综合运用程序设计技术、网络技术,以VisualC++6.0作为系统前台应用程序开发工具,主要研究了在TCP/IP协议下的局域网聊天室。
此局域网聊天室采用客户端/服务器(C/S)模式和TCP连接。
它有两个模块组成:
服务器和客户端。
服务器模块主要用来维护网络上所有用户的信息,如用户名;聊天客户端模块主要包括用户登录、发送信息、接收信息等。
整个工程采用结构化的方式进行编译,逐步完善系统功能。
系统采用CSocket实现连网功能。
CSocket是MFC在CAsyncSocket基础上派生的一个同步阻塞Socket的封装类。
而Socket是Windows中得到广泛应用的、开放的、支持多协议的网络编程接口。
该聊天室是一套适用于Internet网络使用的网络聊天室,其操作简单,灵活性好,运行也比较稳定。
关键词:
VC++;套接字;传输控制协议;网络;聊天室
Abstract
Alongwiththehigh-speeddevelopmentofthecomputerscienceandInternet,chattingonlinehasbeenanimportantmethodinourcommunication.ComparingwithE-mailandtelephone,thechat-lineserviceismorereal-timeandeffective.Thesubjectunderdiscussionadoptsthemethodofthesoftwareproject,useproceduredesigningtechniqueandthenetworktechnology.TheprojectuseVisualC++6.0asthedevelopmenttools,mainlystudiesundertheTCP/IPprotocolofLANchatrooms.
Thislocalareanetworkchattooladoptsclient/servermechanism(C/S)andTCP.Itiscomposedoftwocomponents:
theserverandtheclient.Theservermodelismainlyusedtoprootectallusers’information,incuudinguser’snameandsoon;Theclientmodelincludesuserregediting,,sendingmessage,receivingmessageandsoon.
SystemusesCSockettoachievenetworking.CSocketisasynchronousblockingSocketwrappersderivedbyMFCbasedonCAsynncSocket.TheSocketiswidelyusedforopen,multi-protocolnetworkprogramminginterfaceinwindows.
Thisnetworkchattoolcanbeusedininternetenvironment,itcanbeoperatedsimply,itsflexibilityisfineandcanrunsteadily.
KeyWords:
VC++;CSocket;TCP;Network;Chatroom
1绪论
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。
基于VC++网络编程的强大功能,本次毕业设计使用VC++编写一个聊天系统。
本系统建立在VC平台上,系统的设计使用了面向对象技术和面向对象的设计原则。
系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过CSocket传送消息[1]。
使用VC++语言编写,开发工具采用VC6.0[2]。
1.1论文的目的和意义
近年来,随着全球信息化的不断发展,网络也在飞速发展。
出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。
为了解决上述矛盾,人们提出了开发局域网聊天软件的构想,通过局域网聊天软件,企业员工可以随时的进行即时消息传递,召开网络会议等,有利于提高工作效率,同时又保护了企业内部信息的安全。
随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。
即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。
为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。
本课题研究的是基于局域网的聊天室,用VC++编写的程序,程序实现一般的文字聊天功能,可作为某局域网的交流工具。
本系统采用基于Socket的方法实现局域网通信,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。
它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点[3]。
基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。
如今基于局域网的即时通信工具一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟。
UDP的实时性比较好,但是不一定提供可靠的数据传输,TCP可以提供可靠的数据传输,本课题采用TCP完成局域网聊天室的设计。
1.2论文的主要内容
本课题主要研究的是局域网聊天室,该聊天室采用客户端/服务器(C/S)模式和TCP连接,能实现用户在客户端与服务器间传递文字信息。
它有两个程序组成:
服务器和客户端,首先需要登录服务器,需要指定服务器地址和端口号,同时设置一个网名,与服务器建立连接,如果所取网名已经被其他已经登录的客户端使用,服务器会告诉客户端,要求重新登录。
登录后,客户端各用户可以发送文字信息,相互聊天。
服务器模块主要用来维护网络上所有用户的信息,如用户名;聊天客户端模块主要包括用户登录、发送信息、接收信息等。
整个工程采用结构化的方式进行编译,逐步完善系统功能。
研究本课题需要熟练掌握VC++语言,并且熟悉VC平台的操作,利用socket编程技术、TCP协议进行局域网聊天软件的实际开发。
选择TCP协议而不选UDP是为了保证信息的可靠性,不同于UDP协议,TCP要求在获得可靠连接后才发送消息。
第一章主要讨论课题研究的目的和意义,并对主要内容作了简单的介绍。
第二章介绍了目前国内外聊天系统的现状,对国内QQ和国外MSN聊天软件做出了概括性的介绍并作了一些比较。
第三章主要介绍开发平台和网络编程,对Socket的历史和发展简单描述。
第四章讨论了整个聊天系统的设计,介绍了客户端/服务器模型,并讨论了系统的实现原理和界面设计。
第五章主要是对各个功能的实现做了详细的分析
第六章给出总结,对设计过程中出现的问题进行分析,概括了整个聊天室系统的优缺点。
并对今后的继续完善做了展望!
2国内外聊天系统的现状
目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。
本人取最具代表性的QQ和MSN进行了一些研究,作为开发聊天系统的准备。
腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。
腾讯的成功与其对QQ的不断创新和完善是分不开的。
参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。
可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。
并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。
图1腾讯QQ服务器-客户端模型
与腾讯QQ不同,微软的MSNMessenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。
图2MSN服务器-客户端模型
腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。
而MSNMessenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。
上述软件都实现了广域网上的即时通信,在使用方面各有特色,在实现方面也各有所长。
但是随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部,所以局域网的聊天工具也占了很大的市场[4]。
3开发环境及编程语言介绍
3.1VisualC++可视化集成开发环境
VC6.0是微软推出的一款可视化编程工具,适用面非常广泛。
VC6.0包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。
使用VC6.0,可以完成创建、调试、修改应用程序等的各种操作。
VC6.0采用标准的多窗口Windows用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易学会它的使用方法。
由于VC6.0是一个可视化的开发工具,在介绍VC6.0的各个组成部分之前,首先了解一下可视化编程的概念。
可视化技术是当前发展迅速并引人注目的技术之一,它的特点是把原来抽象的数字、表格、功能逻辑等用直观的图形、图象的形式表现出来[5]。
可视化编程是它的重要应用之一。
所谓可视化编程,就是指:
在软件开发过程中,用直观的具有一定含义的图标按钮、图形化的对象取代原来手工的抽象的编辑、运行、浏览操作,软件开发过程表现为鼠标点击按钮和拖放图形化的对象以及指定对象的属性、行为的过程。
这种可视化的编程方法易学易用,而且大大提高了工作效率[6]。
3.2网络编程
80年代初,美国政府的高级研究工程机构(ARPA)给加利福尼亚大Berkeley分校提供了资金,让他们在UNIX操作系统下实现TCP/IP协议。
在这个项目中研究人员为TCP/IP网络通信开发了一个API(应用程序接口)。
这个API称为Socket接口(套接字)。
今天,SOCKET接口是TCP/IP网络最为通用的API,也是INTERNET上进行应用开发最为通用的API。
套接字是从英文单词socket翻译过来的,(Socket在英文中是插座的意思,在这里设计者实际上是暗指电话插座。
因为在Socket环境下编程很像是打电话的模拟,Internet的IP地址就是电话号码,要打电话,首先要有个电话插座,在程序中就是向系统申请一个Socket,以后两台机器上的程序“交谈”都是通过这个Socket来进行的。
对程序员来说,也可以把Socket看成一个文件指针,只要向指针所指的文件读写数据,就可以实现双向通讯。
它是网络通信的基本构件。
套接字是可以被命名和寻址的通信端点,是网络互连终点。
换句话说,网络互连是两个计算机或处理器通过网络相互传输数据。
网络专业人员将每个网络会话的末端称做终点。
若通过套接字接口进行网络互连,则程序在每个网络互连的末端都需要一个套接字,套接字接口相当于文件系统,可以使用API通过网络软件申请一个可以指定特定套接字的句柄来定义套接字的特性。
当然,套接字句柄和文件句柄是不同的,文件句柄指向一个特定的文件和设备,而套接字句柄并不代表一个特定的终点或目标地址。
基于套接字的程序先创建一个套接字,然后再将套接字和目标终点连接起来。
底层的套接字函数是WinInetAPI的一部分,但使用MFC的CSocket类,它封装了这些套接字函数。
CSocket类实际上来源于CAsyncSocket类,但该类编程比较复杂,需要编写底层函数来进行通信操作,而CSocket为底层函数提供了一个更抽象的封装,替编程者执行对底层函数的操作,简化了Socket编程。
CSocket类提供了一个高级的Socket支持,运用了MFC的序列化类来提供和传输Socket对象。
利用Socket进行通讯,有两种主要的方式。
一种叫流方式(StreamSocket)也称面向连接方式。
在这种方式下,两个通讯的应用程序之间先要建立一种虚拟的连接。
其过程好像客户机在给服务器打电话,只有服务器拿起了听筒,才有可能开始传输数据,这种方式对应的TCP协议。
第二种叫作数据报文方式(DatagramSocket),又称无连接方式,这时两台计算机像是把数据放在一封封信里通过网络寄给对方,信在传送的过程中有可能会残缺不全,而且,后发出的信也有可能会先收到,它对应的是UDP协议[7]。
流方式的特点是,通讯可靠,对数据有校验和重发的机制,通常用来作数据文件的传输如ftp、telnet等;数据报文方式由于取消了重发校验机制,能够达到较高的通讯速率,可以用作一些对数据可靠性要求不高的通讯,如实时的语音、像转送、播消息等。
由于两台计算机之间采用的是客户机/服务器模式,为保证数据的可靠性,可以采用了基于流方式的套接字编程[8]。
4局域网聊天室的设计
4.1客户机/服务器模式
通信的两个应用程序间相互作用的主要模式是客户机/服务器模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。
客户机/服务器模式的建立基于以下两点:
首先。
建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。
其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步[9]。
客户机/服务器模式在操作过程中采取的是主动请求方式:
首先服务器方要先启动,并根据请求提供相应服务:
1)打开通信通道并告知本地主机,它愿意在某一公认地址上接收客户请求;
2)等待客户请求到达该端口;
3)接收到服务请求,处理该请求并发送应答信号。
服务完成后,关闭与客户的通信链路,并终止;
4)返回第二步,等待客户请求;
5)关闭服务器。
客户方:
1)打开一通信通道,并连接到服务器所在主机的特定端口;
2)向服务器发服务请求,等待并接收应答;
3)请求结束后关闭通信通道并终止。
由此可知:
1)客户与服务器进程的作用是非对称的,因此编码不同;
2)服务进程一般是先于客户请求而启动的。
只要系统运行,该服务进程一直存在,直到正常终止或被强迫终止。
4.2系统实现原理
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。
因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
为了利用重载套接字的消息相应函数必须从CAsyncSocket派生出自己的套接字类,有时为了分开监听套接字和客户端套接字,还应该分别派生监听套接字类和客户端套接字类。
利用这两类函数就可以开始写网络通信程序。
整个过程可以分成三个阶段连接建立、数据传和拆除连接[10]。
图3系统实现原理图
在套接字创建以及通信的过程中,将用到很多函数处理相关事件,具体函数见下:
(1)AfxSocketInit():
此函数在初始化应用程序函数中调用,用于确定Winsock版本并做一些套接字的初始化工作。
(2)Create():
创建套接字,在创建监听套接字时必须加上端口号。
(3)Listen():
监听套接字专用,用于向监听套接字发送对端口监听的命令。
(4)Connect():
客户端套接字专用,用于向服务器发送连接请求。
(5)Accept():
监听套接字专用,用于接受客户端通过网络发送的连接请求,建立连接。
(6)Send():
用于向套接字发送数据。
(7)Receive():
用于套接字接受数据。
(8)Close():
关闭套接字,可由析构函数调用。
在整个通信过程中,当某一事件触发时,应用框架将收到某些消息,从而自动调用响应函数。
可以在这些函数中写入自己的代码,从而更好的完成通信过程。
具体函数见下:
(1)OnAccept():
监听套接字在端口听到连接请求时应用程序框架自动调用,以告知可以接受请求或拒绝连接。
可在该函数中调用Accept()来连接请求,建立连接。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC 局域网 聊天室 毕业设计 论文