基于局域网的聊天软件的设计与实现 (毕业论文).docx
《基于局域网的聊天软件的设计与实现 (毕业论文).docx》由会员分享,可在线阅读,更多相关《基于局域网的聊天软件的设计与实现 (毕业论文).docx(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 编号 毕 业 设 计(论文)题目 基于局域网的聊天工具 的设计与实现 二级学院 专 业 班 级 学生姓名 学号 指导教师 职称 时 间 目 录摘 要IAbstractII1引 言11.1开发背景11.2课题研究的意义22 系统概述22.1国内外发展现状22.2系统实现技术32.2.1 MFC窗口控件重绘32.2.2 Winsock编程52.2.3基于UDP的文件传输62.2.4多线程编程72.2.5扩展功能广域网聊天83系统分析93.1需求分析93.2可行性分析103.2.1技术可行性103.2.2操作可行性103.2.3经济可行性103.2.4进度可行性113.3系统业务流程分析113.3
2、.1会员处理业务流程图113.4系统数据流程分析123.4.1顶层数据流程图123.4.2第一层数据流程图123.4.3第二层数据流程图123.5系统数据模型163.5.1系统E-R图163.5.2 CDM图183.5.3 PDM图194系统详细设计204.1系统功能设计204.1.1主要功能模块204.1.2主要功能描述214.2重要模块的具体实现234.2.1网络通信的实现234.2.2登陆验证模块294.2.3添加好友和加入群模块314.2.4基于UDP的文件传输模块324.2.5群聊天模块364.2.6网络通信安全模块374.3数据设计374.3.1数据库设计374.3.2数据结构39
3、4.4用户界面设计444.4.1 用户界面设计原则444.4.2 登陆会员界面484.4.3 登陆验证界面484.4.4 已登陆界面494.4.5 修改个人资料界面504.4.6 查找好友/群的界面514.4.7 好友聊天界面524.4.8 群聊天界面534.4.9 好友信息界面544.4.10 简洁模式界面554.5代码设计565系统实施675.1系统实施675.1.1软件开发工具的选择675.1.2开发平台675.1.3模式选择675.1.4程序设计与调试675.2系统测试685.3系统维护686总 结69致 谢70参考文献71文献综述72 基于局域网的聊天软件的设计与实现摘 要如今网络的
4、飞速发展,网络世界这一概念早已不再陌生,正是因为即时通讯软件的诞生,网络世界才蓬勃发展。即时通讯软件给人们提供了一个交流的平台,这种平台逐渐衍生发展成为一种特殊的社区,但是脱离这样的社区就会影响到人们的正常生活,工作和学习。随着通信,网络的整合,即时通讯软件将进一步发展成为新一代的通讯软件,有着巨大的发展前景。iMessaging局域网聊天软件正是介于这样的发展背景之下开发而成,后续将探索更为便捷,更多元化的聊天模式,随着后期的逐步完善,将会提高人们学习,办公,交流的效率,提供更为直观的聊天方式,开创聊天软件的新局面。关键词:聊天软件,即时通讯 AbstractToday, with the
5、rapid development of the network, the network concept is no longer new to the world. Because of the birth of instant messaging software, precisely, the online world was booming. Instant messaging software to provide people with a communication platform that gradually developed into a special kind of
6、 derivative of community, but from such a community will affect peoples normal life, work and study and so on. As communications, network integration, instant messaging software will be further developed into a new generation of communications software, has great prospects for development. iMessagin
7、g between LAN chat software is developed under the background that made the development of follow-up to explore more convenient, more diversified chat mode, with the gradual improvement of late, will increase people to study, office, communication efficiency provide a more intuitive way to chat, and
8、 chat software must be arrive at a new situation.Key words: instant messagingII1引 言聊天工具的出现,促进了网络社会的形成,人们的生活世界也逐渐的划分为真实世界和虚拟世界。这里的虚拟世界就是指以网络为载体的生活,人们通常并不需要知道对方是谁,也不需要了解网络上的资源是谁提供的,便可以遨游于这个虚拟的世界,寻找属于自己的天空。虚拟世界从某种程度上促进了社会各个方面的发展,无论从经济上,文化上,教育上都有着举足轻重的地位。而作为网络社会的交通工具之一聊天工具扮演着极为重要的角色,它促进了人们思想交流,加快了信息流通的速
9、度,使这个信息化的世界高速的运转着。在社会方面,聊天工具提供了一个交流的平台,就好比一个虚拟的社会,广大的使用者可以通过这个社会里畅所欲言,以特殊的方式营造出了一种社会属性。在教育方面,聊天工具带给我们新式的教学体验,使在线文字,语音,视频教学成为了可能,更重要的是,人们可以分享彼此的思想和经验,促进精神和教育文化的发展。在工作方面,人们利用聊天室和聊天群招开工作会议,利用聊天工具的文件服务实现文件共享和文件传输,提高了工作的效率。综观聊天工具的发展史,从单一的一对一聊天,到多对多的互动式聊天,聊天工具正在进行了一场人类思想交流观的革命。目前的主流聊天工具更是将工作、娱乐、购物整合在了一起,逐
10、渐发展成了综合化的聊天软件。人们对聊天工具的开发与研究将不会懈怠,反而会更深入的探索其意义。在我看来,由于互联网的飞速发展,其必定会整合通信行业,而聊天工具将会取代电话,成为最流行普及的交流工具。1.1开发背景1970年早期,一种更早的即时通讯形式是柏拉图系统(PLATO system)。在这之后在1980年,UNIX/Linux的交谈即时通讯被广泛的使用于工程师与学术界,1990年即时通讯更跨越了网际网路交流。1996年11月,ICQ是首个广泛被非UNIX/Linux使用者用于网路的即时通讯软体。在ICQ的介绍之后,同时在许多地方有一定数量的即时通讯方式发展,且各式的即时通讯程式有独立的协定
11、,无法彼此互通。这引导着使用者同时执行两个以上的即时通讯软体,或者他们可以使用支援多协定的终端软体,如Gaim、Trillian或Jabber。 在中国,QQ是目前最主流的聊天软件,具有庞大的用户群体,功能具有多样化。1.2课题研究的意义研究该课题,具有重大意义,这对于今后研究网络与通信融合具有指导作用。虽然目前的聊天软件已经具备强大多种的功能,并且支持广域网的聊天,但是他们仍然存在各种各样的问题,如安全问题。虽然该课题仅仅包含了即时通讯软件的简单的功能,但对于后续的研究与开发,有辅助作用。2 系统概述iMeassaging即时通讯程序是基于windows下的聊天程序,采用Winsock实现网
12、络通讯,其设计架构为集中式的P2P,即服务器为中心,所有相关的核心数据全部存放在服务器上,客户端只能按照规定的方式读取其数据。该软件主要采用UDP协议,但某些特殊情况也采用了TCP协议。比如,命令消息和聊天消息均基于UDP协议,而获取用户列表则采用的是TCP协议,两种协议的混用更能保证客户端与服务器通讯时的效率和准确性。iMessaging实现了在局域网下进行个人聊天,群聊天,文件发送等的功能,其组成部份是客户端和服务器两大部分。其中服务器部分进行对会员,群数据的增添,删除,存储,查询等,并即时相应客户端发送而来的命令,进行相关的数据读写,并返回客户端相应的命令消息。客户端部分则是实现用户的操
13、作界面,实现用户间的聊天或者文件发送,以及群聊天等功能。2.1国内外发展现状随着移动互联网的发展,互联网即时通信也在向移动化扩张。目前,微软、AOL、Yahoo、UcSTAR等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。 即时聊天软件最早的创始人是三个以色列青年,是他们在1996年做出来的,取名叫ICQ。1998年当ICQ注册用户数达到1200万时,被AOL看中,以2.87亿美元的天价买走。目前ICQ有1亿多用户,主要市场在美洲和欧洲,已成为世界上最大的即时通信系统。 现在国内的即时通信工具按照使用对象分为两类:
14、一类是个人IM,如:QQ,百度hi,网易泡泡,盛大圈圈,淘宝旺旺等等。QQ的前身OICQ在1999年2月第一次推出,目前几乎接近垄断中国在线即时通讯软件市场。百度Hi具备文字消息、音视频通话、文件传输等功能,您可通过它找到志同道合的朋友,并随时与好友联络感情;另一类是企业用IM,简称EIM,如:E话通,UC,EC企业即时通信软件,UcSTAR、商务通等。 即时通信最初是由AOL、微软、雅虎、腾讯等独立于电信运营商的即时通信服务商提供的。但随着其功能日益丰富、应用日益广泛,特别是即时通信增强软件的某些功能如IP电话等,已经在分流和替代传统的电信业务,使得电信运营商不得不采取措施应对这种挑战。20
15、06年6月,中国移动已经推出了自己的即时通信工具Fetion,中国联通也将推出即时通讯工具“超信”,但由于进入市场较晚,其用户规模和品牌知名度还比不上原有的即时通信服务提供商。2.2系统实现技术2.2.1 MFC窗口控件重绘MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。的确,MFC给我们提供了很便捷的编程方式,我们几乎可以不
16、需要写任何代码就能生成一个带有菜单,工具栏和视图的窗口,MFC也提供了丰富的控件类,在设计对话框的时候,我们也只需要直接将控件拖进对话框里,而不用写任何代码。 iMessaging就是典型的应用程序,采用了对话框设计框架,但是为了设计一个友好美观的操作界面,仅用微软提供的控件类库达不到预期的效果,因此,就必须重新绘制其对话框和控件的界面。而正由于微软将这些控件封装得很好,对于要修改它的属性,派生一些美观的子控件难度就显得比较大。一般来说,实现对控件的重绘技术主要有子类化,自绘和重绘技术,由于框架太过于标准化,因此实现这些技术也是有一定的难度,这必须要对框架的结构有一定的了解。iMessagin
17、g采用了的窗体背景重绘,listctrl自绘,按钮贴图等方式实现了操作界面的美观。主要核心技术是双缓冲绘图。双缓冲绘图就是将待绘制的图片保存到内存里,当需要绘制到屏幕上时,再一次性投递到设备描述表里,这样既避免了窗口重绘时的闪烁,又提高了绘制的速度和效率。BOOL CDC:CreatieCompatibleDC(CDC* pDC)函数用来创建一个兼容DC,即在内存里创建一个DC,以后的任何绘图所需的操作,如选用何种画笔,画刷,字体等,都将在内存中进行,而不是在真实设备上下文里。随后可以创建一张兼容位图,需要绘制的图像将,函数原型如下BOOL CBitmap:CreateCiompatibleB
18、itmap(CDC* pDC,int nWidth,int nHeight)。最后需要将兼容DC里的东西投射到真实的DC里, BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc,DWORD dwRop )函数可以实现该功能,具体用法可参考MSDN。对话框的绘制比较容易,MFC为对话框提供了OnPaint消息相应函数,但是在该函数下绘制并不能从根本上重绘对话框,因为该函数还会调用CDialog:OnPaint函数,在内部还会再去重绘背景
19、,因此要实现完全意义上的重绘背景,就必须响应WM_ERASEBKGND消息,在消息响应函数里实现我们自己的绘制方法,然后直接返回TRUE,不再调用CDialog:OnEraseBkgnd()函数。为了实现像QQ那样的界面,必须将对话框的属性设置为None属性,即没有标题栏,因此只有自己去实现标题栏的功能。CListCtrl重绘的方法有两种,一种是采用微软提供的OWNERDRAW属性,通过重载DrawItem虚函数来进行重绘。另外一种就是Custom-draw属性,通过定义自绘消息响应函数来进行重绘。两种方式有不同之处,前者需要对整个ListCtrl绘制,必须考虑到每一个item项的绘制情况。而
20、后者相对比较简便,系统会在四个状态的时候通知重绘,这四个状态分别是绘制前,绘制后,擦除前,擦除后,我们就可以按照自己的需要去绘制,并且我们只用考虑其中一项item的绘制方法,就可以应用于所有项。iMessaging采用了后者进行对列表控件的重绘,实现了好友列表控件,群列表控件类。对于VC6开发环境,微软提供的通用button控件的外观从现在看来的确不太美观,无法实现动态状态的效果。那么因此就必须重新创建一个派生于CButton的按钮类,由于该类将应用于本软件的所有按钮控件,因此做成可贴状态图的按钮控件最为合适。状态分为移出按钮,悬浮按钮,按下按钮,禁用按钮四种状态,我们只需要提供相应的状态的B
21、itmap就可以。具体重绘方法就是采用前面提到的OWNERDRAW属性,重载虚函数DrawItem。而捕获鼠标的移入移出消息可以使用_TrackMouseEvent函数,通过设置TRACEMOUSEEVENT结构体的值来捕捉该消息。其移出消息对应的是WM_MOUSELEAVE,移入按钮消息是WM_MOUSEHOVER,分别定义其消息相应函数,这样就能实现状态的更替,再进行相应的绘制。2.2.2 Winsock编程Windows下网络编程的规范Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。它实现了标准socket编成的函数,提供了一套属于wi
22、ndows下的套接子API。其通信的基础是套接字(Socket),一个套接字是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接字都有它的类型和与其相关的进程。套接字存在于通讯域中。通讯域是为了处理一般的线程通过套接字通讯而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。Windows Sockets规范支持单一的通讯域,即Internet域。各种进程使用这个域互相之间用Internet协议族来进行通讯(Windows Sockets 1.1以上的版本支持其他的域,例如Windows Sockets
23、2)。套接字可以根据通讯性质分类;这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间通讯。不过只要底层的通讯协议允许,不同类型的套接字间也照样可以通讯。用户目前可以使用两种套接字,即流套接字和数据报套接字。流套接字提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接字支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接字的一个重要特点是它保留了记录边界。对于这一特点,数据报套接字采用了与现在许多包交换网络(例如以太网)非常类似的模型。其中TCP协议就是基于流套接字,而UDP协
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于局域网的聊天软件的设计与实现 毕业论文 基于 局域网 聊天 软件 设计 实现 毕业论文
限制150内