毕业设计论文 局域网聊天系统Word文件下载.docx
- 文档编号:6103658
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:26
- 大小:232.16KB
毕业设计论文 局域网聊天系统Word文件下载.docx
《毕业设计论文 局域网聊天系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《毕业设计论文 局域网聊天系统Word文件下载.docx(26页珍藏版)》请在冰点文库上搜索。
3.1.1WIN32编程原理5
3.1.2MFC框架6
3.2TCP/IP协议及WINDOWSSOCKETS网络编程接口8
3.2.1TCP/IP协议简介8
3.2.2WINDOWSSOCKETS网络编程接口概述10
3.3多线程编程技术11
3.3.1进程及线程概述11
3.3.2Win32API对多线程编程的支持12
4总体设计13
4.1体系结构设计13
4.2功能模块划分14
4.3数据结构设计15
4.4用户界面设计15
4.4.1服务器端显示界面:
15
4.4.2客户端显示界面:
16
5详细设计及编码实现16
5.1主框架及用户界面模块详细设计16
5.2网络扫描模块详细设18
5.3信息发送模块详细设计18
5.4信息接收模块详细设计20
6测试20
结论21
致谢22
参考文献23
摘要
随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。
局域网的发展也同样迅速。
很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。
所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。
并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。
本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用windows消息机制实现进程间的同步,两种机制结合使用。
关键词:
局域网;
即时通信;
客户端;
服务端;
多线程;
共享内存;
信息
Abstract
Alongwiththehigh-speeddevelopmentofthecomputernetworktechnology,variousofapplicationsbasedonnetworkwasborn,likeinformationreleasing,datasharing...ThedevelopmentoftheLANisthesamefast.Somegovernments,enterprisesandschoolsconstituteaLANfirst,thenjoinintoINTERNET.SotheinstantmessengerinLANwasborned.SoImakeanewdesign,andimplementitonWINDOWSplatform.Inmyimplementationtheclientandtheserverwereintegratedinoneprogramwithmultithreadmechanism.AndhadagoodGUI,itwasveryeasytouseit.Andthefunctionisveryrealizable.Atlast,itisalsoeasyforexpanding.
Keywords:
LAN,instantmessaging,client,server,multithread,sharememory,Information
1引言
近年来,随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。
这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。
为了解决上述矛盾,人们提出了许多方法。
提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。
然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。
我在本文中将讨论一种基于Socket的局域网通信工具的设计与实现方法。
基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。
它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。
基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。
1.2课题现状
基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟,比如较早的ICQ,MSNMessanger,Yahoo通这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。
而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。
这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。
在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要复杂,但是又可以借些理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。
本文主要工作是设计一个基于WINDOWS平台的局域网即时聊天工具,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。
1.4开发平台与技术的选择及介绍
1.4.1开发环境的介绍
我所设计的是一个面向中小型机构内部通信需求的局域网即时信息软件,要在短时间内开发出来并且要满足客户要求,无论是硬件还是软件都要选择合适,要求如下:
开发设备应该完备;
开发机器的性能必须稳定;
操作系统的选择必须恬当;
开发出的程序可以在尽可能多的平台上运行;
要求运行机配置尽可能低档。
对此,我们选择的硬件环境和软件环境如下:
(1)硬件环境
开发该系统应尽可能采用高档的硬件。
因此,在应用时应采用更好的配置。
处理器:
IntelPentiumPIII或更高处理器。
内存:
128MB或更高。
网络:
局域网。
(2)软件环境
选择好的操作系统和好的编程语言是系统优劣的关键,我们要求系统在尽可能多的环境下运行,故选择WindowsXP平台,对于一些无法在98中运行的API函数,一律不采用,并采取优化的算法编写程序。
因VC6.0具有友好的集成开发界面、面向对象的可视化开发模式、良好的数据库及多媒体应用支持以及高效的软件开发与程序运行,功能更大,开发效率更高,不仅是网络环境下的优秀前端开发语言和工具,也是服务器端Web编程的优秀工具。
加之我本人对本系统的操作最为熟练,所以选择该平台为开发环境。
操作系统:
WindowsXP或Window2000。
开发工具:
VC++6.0。
1.4.2WINDOWSSOCKETS网络编程接口概述
既然选定了WINDOWS平台,而又要开发网络通信程序,所以可以选择WINDOWS的SOCKETS编程接口,WindowsSockets是一套开放的、支持多种协议的Windows下的网络编程接口。
现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。
Winsockets无疑是我们进行网络编程的利器。
1.4.3VC++6.0开发平台简介
开发平台我选用了VC6.0,因为一直以来都使用VC6进行学习,对这个IDE最为熟悉,再者VC同样是由微软开发的系统,与其操作系统,网络接口具有最为密切的契合优点,所以选择了VC6.0。
2需求分析及可行性研究
2.1.1时间要求
本项目作为大学本科毕业设计题目,从3月8号接受选题开始,在5月10号之前完成系统设计,编码实现工作,在5月20号之前完成毕业设计论文初稿,6月1号之前最终完成论文。
2.1.2功能要求
(1)用户端之间的信息发送,本程序需要实现的最基本的功能
(2)在线用户主机名列表的维护。
(3)在C/S模式中,服务器与客户端是相互依赖的。
在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。
在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;
客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。
2.1.3系统基本流程图
图2-1聊天系统工作流程图
2.1.4性能要求
首先要求程序要完全可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。
要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。
程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。
开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。
要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。
并且不发生内存泄漏之类影响系统运行的错误事件。
并且要求易于维护及扩展。
所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。
2.1.5测试环境规定
在开发完成以后,自己进行一个全面的测试。
(1)成本可行性分析
因为本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。
(2)技术可行性分析
首先我已经搭建好开发所需要的软硬件平台,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与VC开发环境的严密契合能力,加之相类似的更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发可行性在技术上是完全可行的。
3相关开发技术的原理性说明
3.1win32编程原理及MFC框架
3.1.1WIN32编程原理
所谓的Win32开发,就是在C语言的层面上,直接使用Win32API开发Windows应用程序或者系统程序。
虽说现在直接用Win32API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。
所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。
下面是进行直接的WIN32SDK方式编程的基本思路或者说是一个框架:
一个WINDOWS程序分为程序代码和UI(UserInterface用户接口)资源两大部份,两部份最后以RC编译程序整合为一个完整的EXE文件。
所谓UI资源是指功能菜单、对话框、程序图标、光标形状等等东西。
这些UI资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如.ico.bmp.cur等等。
程序员必须在一个所谓的资源描述档(.rc)中描述它们。
RC编译器(RC.EXE)读取RC文件的描述后将所有UI资源文件集中制作出一个.RES文件,再与程序代码结合在一起,这才是一个完整的Windows可执行文件。
与控制台程序相同的是,一个WIN32程序也必须有一个程序入口点,但是在这儿它不再叫main(),而叫做WinMain(),当WINDOWS的SHELL检测到用户欲执行一个EXE程序,就会调用加载器把程序进行加载,然后调用Cstartupcode,后者再调用WinMain(),程序的执行就开始了,WinMain()函数的原型为:
intCALLBACKWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow);
图3-132位WINDOWS程序的开发流程
下面程序必须进行必要的初始化工作-产生窗口,第一步是注册一个窗口类:
用API函数:
RegisterClass(),而这个函数需要一个已经定义好的系统结构:
WNDCLASS,这个结构里面定义了窗口的种种属性,需要自己定义,但是许多属性都有默认值。
然后调用CreateWindow()函数来产生具有上述定义属性的已注册窗口,但是需要注意的是它只是生成窗口,但并不显示之,所以还需要调用一个函数ShowWindow()将它显示在屏幕上,做完这些初始化工作以后,系统将进入消息循环:
while(GetMessage(&
msg,NULL,0,0)){
TranslateMessage(&
msg);
DispatchMessage(&
}
当消息循环捕捉到消息以后将交由窗口函数WndProc()窗口函数进行相应的处理。
这样,一个基于消息事件驱动的WIN32程序的雏形就建立了起来。
3.1.2MFC框架
由上面的介绍可以看出,直接用API函数开发一个WIN32程序是相当麻烦的,有好多既定的重复性的工作要做,所以微软就用C++的类机制将绝大部分的API函数进行了封装,构成了类,并且将基本的流程也封装在类机制下面,大大简化了WIN32开的的复杂性,尤其是在开发比较大型程序的时候这个便宜性更会得以体现。
它就是MicrosoftFoundationClasses,简称为MFC,可以说它是VC开发环境的一个核心构件。
MFC构架了一个庞大的类体系结构,在4.0时代就多达189个类,程序代码达252个文件,58个头文件,共10MB之多,MFC4.2时又多加了29个类,但是最为主干的是下面类结构示图所示的一些类:
图3-2MFC类框架主体
CObject是MFC类库的根类。
MFC类库包括:
(1)CCmdTarget类:
是CObject类的子类,它是MFC库中所有具有消息映射属性的类的公共基类。
它的子类有CWinThread类,CWnd类、CDocument类,从CCndTarget类派生的类能在程序运行时动态创建对象,并处理命令消息。
(2)CWinThread类:
是CCmdTarget的子类。
CWinThread是所有线程类的基类,封装了应用程序操作的多线程功能。
应用程序类CWinApp是CWinThread的子类,封装了初始化、运行、终止应用程序的代码。
(3)CWnd类:
窗口类,是CcmdTarget类的子类,从CWnd派生的类可以拥有自己的窗口,并对它进行控制。
窗口框架类CFrameWnd和CView类是CWnd的子类,前者创建和维护窗口的边框、菜单栏、工具栏、状态栏,负责显示和搜索用户命令,后者负责为文档提供一个或几个视图。
视图的作用是为修改、查询文档等任务提供人机交互的界面。
(4)文档类CDocument类:
是CCmdTarget类的子类,负责封装和维护文档。
文档包括应用程序的工作成果或环境设置数据等,可以是程序需要保存的任何内容。
一个MFC应用程序并不直接操作上述类,而是以上述类为基类派生新的类,构建Windows应用程序的基本框架。
构建一个基于MFC框架的程序,可以使用MFC的向导程序,但首先要明白,一个基于MFC的程序可以有几种类型:
基于单文档结构的程序,基于多文档结构的程序以及基于对话框的应用程序,不同类型的程序具有不同的程序属性。
使用其向导以及控件编程,使得不论是界面编写,还是程序内核设计,都更加的简单。
其中有合理的消息映射机制,有方便的运行时类型识别功能,更有文档/视图结构设计,文档串行化功能等非常多的优秀功能。
3.2TCP/IP协议及WINDOWSSOCKETS网络编程接口
3.2.1TCP/IP协议简介
(1)TCP/IP协议
通常包含了一系列与“TCP(传输控制协议)”和“IP(网际协议)”有联系的网络协议,它包括其它的协议,应用软件,甚至网络媒介。
这些协议的示例是:
UDP(UserDatagramProtocol)协议、ICMP(InternetControlMessageProtocol)协议、ARP(地址解析协议)和其他一些协议的协议组。
应用的示例:
telnet(远程登录)、ftp(文件传递协议)、http等。
(2)逻辑结构:
图3-3逻辑结构
这是TCP/IP协议的分层结构在互连网计算机上的表示,用互连网技术互相通信的每台计算机都有这样的分层结构。
这样的分层结构决定了计算机在internet上互相通信的方式。
数据通过这样的分层结构从上层传到底层,然后通过网线把数据传送出去。
底层的水平线代表以太网网线,“O”代表收发器,“*”代表IP地址,“@”代表网址,理解这样的分层结构是理解INTERNET技术的基础。
(3)本论文涉及到的协议:
IP、TCP
IP(InternetProtocol)是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;
相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。
IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。
IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
UDP(IP协议号17)是一个无连接的数据报协议。
它是一个“besteffort”或者“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。
UDP的典型性应用是如流媒体(音频和视频等)这样按时到达比可靠性更重要的应用,或者如DNS查找这样的简单查询/响应应用,如果需要建立可靠的连结,哪么所作的额外工作将是不成比例地大。
本程序只应用于局域网中,局域网中的数据流传输的可靠性高,故选择UDP协议。
3.2.2WINDOWSSOCKETS网络编程接口概述
在网络编程中最常用的方案便是Client/Server(客户机/服务器)模型。
在这种方案中客户应用程序向服务器程序请求服务。
一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提出了连接请求。
在这个时刻,服务程序被"
惊醒"
并且为客户提供服务-对客户的请求作出适当的反应。
为了方便这种Client/Server模型的网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即WindowsSockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。
Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。
应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。
如下图所示:
图3-4面向连接的套接字的系统调用图
微软为VisualC++定义了Winsock类如CAsyncSocket类和派生于CAsyncSocket的CSocket类,它们简单易用,我们当然可以使用这些类来实现自己的网络程序,但是为了更好的了解WinsockAPI编程技术,本设计中将使用底层的API函数实现Winsock平台的即时通信工具。
在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面的三个文件,否则会出现编译错误。
(1)WINSOCK.H:
这是WINSOCKAPI的头文件,需要包含在项目中。
(2)WSOCK32.LIB:
WINSOCKAPI连接库文件。
(3)WINSOCK.DLL:
WINSOCK的动态连接库,位于WINDOWS的安装目录下。
3.3多线程编程技术
3.3.1进程及线程概述
进程和线程都是操作系统的概念。
进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。
线程是进程内部的一个执行单元。
系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。
主执行线程终止了,进程也就随之终止。
每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。
用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。
一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。
多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。
要说明的一点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计论文 局域网聊天系统 毕业设计 论文 局域网 聊天 系统