ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:232.16KB ,
资源ID:10132074      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10132074.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业设计论文 局域网聊天系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

毕业设计论文 局域网聊天系统.docx

1、毕业设计论文 局域网聊天系统 目 录摘要 IAbstract II1 引 言 11.1 课题背景及意义: 11.2 课题现状 11.3 本文的主要工作: 21.4开发平台与技术的选择及介绍 21.4.1 开发环境的介绍 21.4.2 WINDOWS SOCKETS网络编程接口概述 31.4.3 VC+6.0开发平台简介 32 需求分析及可行性研究 32.1 需求分析: 32.1.1 时间要求 32.1.2 功能要求 32.1.3 系统基本流程图 42.1.4 性能要求 42.1.5 测试环境规定 42.2 可行性研究: 43 相关开发技术的原理性说明 53.1 win32编程原理及MFC框架

2、53.1.1 WIN32编程原理 53.1.2 MFC框架 63.2 TCP/IP 协议及WINDOWS SOCKETS网络编程接口 83.2.1 TCP/IP协议简介 83.2.2 WINDOWS SOCKETS网络编程接口概述 103.3 多线程编程技术 113.3.1 进程及线程概述 113.3.2 Win32 API对多线程编程的支持 124 总体设计 134.1体系结构设计 134.2 功能模块划分 144.3 数据结构设计 154.4 用户界面设计 154.4.1 服务器端显示界面: 154.4.2 客户端显示界面: 165 详细设计及编码实现 165.1 主框架及用户界面模块详细

3、设计 165.2 网络扫描模块详细设 185.3 信息发送模块详细设计 185.4 信息接收模块详细设计 206 测 试 20结 论 21致 谢 22参考文献 23摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。并进行了人性化的界面

4、设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用windows消息机制实现进程间的同步,两种机制结合使用。 关键词:局域网;即时通信;客户端;服务端;多线程;共享内存;信息 AbstractAlong with the high-speed development of the computer network technology, various of applications based on network was born, like information releasing, data shar

5、ing . The development of the LAN is the same fast. Some governments, enterprises and schools constitute a LAN first ,then join into INTERNET. So the instant messenger in LAN was borned. So I make a new design, and implement it on WINDOWS platform. In my implementation the client and the server were

6、integrated in one program with multi thread mechanism. And had a good GUI,it was very easy to use it. And the function is very realizable. At last, it is also easy for expanding.Key words: LAN, instant messaging, client, server, multi thread,share memory,Information 1 引 言1.1 课题背景及意义:近年来,随着全球信息化进程的不断

7、发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。 为了解决上述矛盾,人们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾

8、的一种方法。然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。 我在本文中将讨论一种基于Socket的局域网通信工具的设计与实现方法。基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。 基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了

9、Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。1.2 课题现状 基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ,MSN Messanger,Yahoo 通这些国外开发的产品,还有

10、国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。在局域网内,这些功

11、能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要复杂,但是又可以借些理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。1.3 本文的主要工作:本文主要工作是设计一个基于WINDOWS平台的局域网即时聊天工具,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。1.4开发平台与技术的选择及介绍1.4.1 开发环境的介绍我所设计的是一个面向中小型机构内部通信需求的局域网即时信息软件,要在短时间内开发出来并且要满足客户要求,无论是硬件还是软件都要选择合适,要求如下:开发设备应该完

12、备;开发机器的性能必须稳定;操作系统的选择必须恬当;开发出的程序可以在尽可能多的平台上运行;要求运行机配置尽可能低档。对此,我们选择的硬件环境和软件环境如下: (1) 硬件环境 开发该系统应尽可能采用高档的硬件。因此,在应用时应采用更好的配置。 处理器:Intel Pentium PIII或更高处理器。 内存:128MB或更高。 网络:局域网。 (2) 软件环境 选择好的操作系统和好的编程语言是系统优劣的关键,我们要求系统在尽可能多的环境下运行,故选择Windows XP平台,对于一些无法在98中运行的API函数,一律不采用,并采取优化的算法编写程序。因VC6.0具有友好的集成开发界面、面向对

13、象的可视化开发模式、良好的数据库及多媒体应用支持以及高效的软件开发与程序运行,功能更大,开发效率更高,不仅是网络环境下的优秀前端开发语言和工具,也是服务器端Web编程的优秀工具。加之我本人对本系统的操作最为熟练,所以选择该平台为开发环境。 操作系统:Windows XP或Window2000。 开发工具:VC+6.0。 1.4.2 WINDOWS SOCKETS网络编程接口概述既然选定了WINDOWS平台,而又要开发网络通信程序,所以可以选择WINDOWS的SOCKETS编程接口,Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经

14、基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Winsockets无疑是我们进行网络编程的利器。1.4.3 VC+6.0开发平台简介开发平台我选用了VC6.0,因为一直以来都使用VC6进行学习,对这个IDE最为熟悉,再者VC同样是由微软开发的系统,与其操作系统,网络接口具有最为密切的契合优点,所以选择了VC6.0。2 需求分析及可行性研究2.1 需求分析:2.1.1 时间要求本项目作为大学本科毕业设计题目,从3月8号接受选题开始,在5月10号之前完成系统设计,编码实现工作,在5月20号之前完成毕业设计论文初稿,6月1号之前最终完成论文。2

15、.1.2 功能要求(1)用户端之间的信息发送,本程序需要实现的最基本的功能(2)在线用户主机名列表的维护。(3)在C/S模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。2.1.3 系统基本流程图图2-1 聊天系统工作流程图2.1.4 性能要求首先要求程序要完全可靠,可以应

16、付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以

17、应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。2.1.5 测试环境规定在开发完成以后,自己进行一个全面的测试。2.2 可行性研究:(1)成本可行性分析因为本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。(2)技术可行性分析首先我已经搭建好开发所需要的软硬件平台,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与VC开发环境的严密契合能力,加之相类似的更大规模的INTERNET通信工具产品也已有例在先,所以这个程序的开发可行性在技术上是完全可行的。3

18、相关开发技术的原理性说明3.1 win32编程原理及MFC框架3.1.1 WIN32编程原理 所谓的Win32开发,就是在C语言的层面上,直接使用Win32 API开发Windows应用程序或者系统程序。虽说现在直接用Win32 API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows开发高手的良好途径。所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的WIN32 SDK方式编程的基本思路或者说是一个框架:一个WINDOWS程序分为程序代码和UI(User Interface 用户接口)资源两大

19、部份,两部份最后以RC编译程序整合为一个完整的EXE文件。所谓UI资源是指功能菜单、对话框、程序图标、光标形状等等东西。这些UI资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如 .ico .bmp .cur等等。程序员必须在一个所谓的资源描述档(.rc )中描述它们。RC编译器( RC.EXE )读取RC 文件的描述后将所有UI资源文件集中制作出一个.RES 文件,再与程序代码结合在一起,这才是一个完整的 Windows可执行文件。与控制台程序相同的是,一个WIN32程序也必须有一个程序入口点,但是在这儿它不再叫main(),而叫做WinMain(),当WINDOWS的S

20、HELL检测到用户欲执行一个EXE程序,就会调用加载器把程序进行加载,然后调用C startup code,后者再调用WinMain(),程序的执行就开始了,WinMain()函数的原型为:int CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);图3-1 32位WINDOWS程序的开发流程下面程序必须进行必要的初始化工作产生窗口,第一步是注册一个窗口类:用API函数:RegisterClass(),而这个函数需要一个已经定义好的系统结构:WNDCLASS,这个

21、结构里面定义了窗口的种种属性,需要自己定义,但是许多属性都有默认值。然后调用CreateWindow()函数来产生具有上述定义属性的已注册窗口,但是需要注意的是它只是生成窗口,但并不显示之,所以还需要调用一个函数ShowWindow()将它显示在屏幕上,做完这些初始化工作以后,系统将进入消息循环:while (GetMessage(&msg, NULL, 0, 0)TranslateMessage(&msg);DispatchMessage(&msg);当消息循环捕捉到消息以后将交由窗口函数WndProc()窗口函数进行相应的处理。这样,一个基于消息事件驱动的WIN32程序的雏形就建立了起来。

22、3.1.2 MFC框架由上面的介绍可以看出,直接用API函数开发一个WIN32程序是相当麻烦的,有好多既定的重复性的工作要做,所以微软就用C+的类机制将绝大部分的API函数进行了封装,构成了类,并且将基本的流程也封装在类机制下面,大大简化了WIN32开的的复杂性,尤其是在开发比较大型程序的时候这个便宜性更会得以体现。它就是Microsoft Foundation Classes,简称为MFC,可以说它是VC开发环境的一个核心构件。MFC构架了一个庞大的类体系结构,在4.0时代就多达189个类,程序代码达252个文件,58个头文件,共10MB之多,MFC4.2时又多加了29个类,但是最为主干的是

23、下面类结构示图所示的一些类: 图3-2 MFC类框架主体 CObject 是 MFC 类库的根类。 MFC 类库包括: (1)CCmdTarget 类:是 CObject 类的子类,它是 MFC 库中所有具有消息映射属性的类的公共基类。它的子类有 CWinThread 类, CWnd 类、 CDocument 类,从 CCndTarget 类派生的类能在程序运行时动态创建对象,并处理命令消息。 (2)CWinThread 类:是 CCmdTarget 的子类。 CWinThread 是所有线程类的基类,封装了应用程序操作的多线程功能。应用程序类 CWinApp 是 CWinThread 的子类

24、,封装了初始化、运行、终止应用程序的代码。 (3)CWnd 类:窗口类,是 CcmdTarget 类的子类,从 CWnd 派生的类可以拥有自己的窗口,并对它进行控制。窗口框架类 CFrameWnd 和 CView 类是 CWnd 的子类,前者创建和维护窗口的边框、菜单栏、工具栏、状态栏,负责显示和搜索用户命令,后者负责为文档提供一个或几个视图。视图的作用是为修改、查询文档等任务提供人机交互的界面。 (4)文档类 CDocument 类:是 CCmdTarget 类的子类,负责封装和维护文档。文档包括应用程序的工作成果或环境设置数据等,可以是程序需要保存的任何内容。 一个 MFC 应用程序并不直

25、接操作上述类,而是以上述类为基类派生新的类,构建 Windows 应用程序的基本框架。构建一个基于MFC框架的程序,可以使用MFC的向导程序,但首先要明白,一个基于MFC的程序可以有几种类型:基于单文档结构的程序,基于多文档结构的程序以及基于对话框的应用程序,不同类型的程序具有不同的程序属性。使用其向导以及控件编程,使得不论是界面编写,还是程序内核设计,都更加的简单。其中有合理的消息映射机制,有方便的运行时类型识别功能,更有文档/视图结构设计,文档串行化功能等非常多的优秀功能。3.2 TCP/IP 协议及WINDOWS SOCKETS网络编程接口3.2.1 TCP/IP协议简介(1)TCP/I

26、P协议通常包含了一系列与“TCP(传输控制协议)”和“IP(网际协议)”有联系的网络协议,它包括其它的协议,应用软件,甚至网络媒介。这些协议的示例是:UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议、ARP(地址解析协议)和其他一些协议的协议组。应用的示例:telnet(远程登录)、ftp(文件传递协议)、http等。 (2)逻辑结构: 图3-3 逻辑结构这是TCP/IP协议的分层结构在互连网计算机上的表示,用互连网技术互相通信的每台计算机都有这样的分层结构。这样的分层结构决定了计算机在interne

27、t上互相通信的方式。数据通过这样的分层结构从上层传到底层,然后通过网线把数据传送出去。底层的水平线代表以太网网线,“O”代表收发器,“*”代表IP地址,“”代表网址,理解这样的分层结构是理解INTERNET技术的基础。(3)本论文涉及到的协议:IP、TCP IP(Internet Protocol)是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者

28、没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 UDP(IP协议号17)是一个无连接的数据报协议。它是一个“best effort”或者“不可靠”协议不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。UDP的典型性应用是如流媒体(音频和视频等)这样按时到达比可靠性更重要的应用,或者如DNS查找这样的简单查询/响应应用,如果需要建立可靠的连结,哪么所作的额外工作将是不成比例地大。本程序只应用于局域网中,局域网中的数据流传输的可靠性高,故选择UDP协议。3.2.2 WINDOWS SOCKETS网络编程接口概述 在

29、网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提出了连接请求。在这个时刻,服务程序被惊醒并且为客户提供服务对客户的请求作出适当的反应。为了方便这种Client/Server模型的网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。

30、现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。如下图所示: 图3-4 面向连接的套接字的系统调用图微软为Visual C+定义了Winsock类如CAsyncSocket类和派生于CAsyncSocket 的CSocket类,它们简单易用,我们当然可以使用这些类来实现自己的网络程序,但是为了更好的了解Winsock API编程技术,本设计中将使用

31、底层的API函数实现 Winsock 平台的即时通信工具。在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面的三个文件,否则会出现编译错误。(1) WINSOCK.H: 这是WINSOCK API的头文件,需要包含在项目中。(2) WSOCK32.LIB: WINSOCK API连接库文件。(3) WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。3.3 多线程编程技术3.3.1 进程及线程概述进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资

32、源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点

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

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