聊天软件论文 .doc

上传人:精*** 文档编号:1159503 上传时间:2024-12-26 格式:DOC 页数:41 大小:920.50KB
下载 相关 举报
聊天软件论文 .doc_第1页
第1页 / 共41页
聊天软件论文 .doc_第2页
第2页 / 共41页
聊天软件论文 .doc_第3页
第3页 / 共41页
聊天软件论文 .doc_第4页
第4页 / 共41页
聊天软件论文 .doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、2008届软件工程专业毕业设计(论文)毕业设计(论文)题 目 局域网聊天软件 专 业 软件工程 班 级 软件041班 学 生 指导教师 2008 年摘 要随着计算机科学和Internet 的飞速发展, 网上聊天已成为人们相互交流的一种方式, 与E-mail、电话相比, 聊天服务更具有实时性和有效性。本论文提出一个运行于.NET平台上的局域网聊天软件的解决方案。该聊天软件包括服务器端和客户端两个模块,客户端通过服务器端进行通信。服务器端模块主要实现了服务器的配置和数据的传递;客户端模块主要实现了用户注册、登录、文字聊天等功能。该软件采用多线程技术支持多用户操作,并采用相关技术进行了优化,加快了文

2、字传递速度。 该软件能够帮助企业在局域网内搭建起自己的聊天系统,避免企业内部员工使用类似QQ等软件泄露内部信息,但是该软件只实现了聊天的基本功能,还有很多不足之处需要改进。【关键字】:局域网,聊天软件,.netABSTRACTAlong with the high-speed development of the computer science and Internet, chatting on line has been an important method in our communication. Comparing with E-mail and telephone, the ch

3、at-line service is more real-time and effective.This thesis proposes a solution of a LAN chatting software based on C# language, which is operated on the .NET platform. This chatting software includes two modules: the server and the client, which can communicate with each other. The server module ma

4、inly completes the sever devices configuration. The client module mainly completes the users login, registration, instant messaging and so on. This software uses the multithreading technical support multi-users operation, and uses the correlation technique to carry on the optimization to speed up th

5、e writing transmission speed. This software can help the company to build their own chatting system in the local area network, and it also can avoid the staff of the company disclosing the insider information by using the other software such as QQ, but this software has only completed the basic func

6、tion as a chatting system, so it need much more improvement.【Key words】:LAN, chatting software, .net目 录前 言- 5 -第1章概述- 6 -1.1 课题背景及意义- 6 -1.2 课题现状- 7 -1.3 课题内容与目标- 7 -第2章系统开发环境和关键技术- 8 -2.1 开发环境- 8 -2.2 关键技术- 8 -2.2.1 .NET Framework和C#- 8 -2.2.2 SQL Server 2000- 9 -2.2.3 WINDOWS SOCKETS网络编程接口- 10 -2.

7、2.4 多线程开发技术- 11 -2.2.5 TCP/IP协议、UDP协议- 11 -2.2.6 Client/Server结构(客户机/服务器模式)- 13 -第3章系统分析与设计- 14 -3.1 系统分析- 14 -3.1.1 系统需求- 14 -3.1.2 需求分析- 15 -3.2 系统设计- 17 -3.2.1 设计原则- 17 -3.2.2 架构设计- 18 -3.2.3 工作流程- 21 -3.2.4 功能设计- 21 -3.2.5 数据库设计- 22 -第4章系统实现- 26 -4.1 服务器端设计实现- 26 -4.1.1 服务器端工作流程图- 26 -4.1.2 服务器主

8、界面- 27 -4.1.3 服务器的配置- 27 -4.1.4 服务器的开启- 28 -4.2 客户端设计实现- 29 -4.2.1 客户端工作流程图- 29 -4.2.2 客户端登陆主界面- 30 -4.2.3 注册- 30 -4.2.4 登陆- 31 -4.2.5 文字传送- 32 -4.2.6 添加好友- 33 -4.3 系统功能特点- 33 -第5章难点及对策- 34 -6.1 在C#中处理Socket网络异常断开的方法- 34 -6.2 .NET中多线程的同步资源访问- 35 -6.3 用C#操纵XML文档- 36 -总结及展望- 37 -致谢- 39 -参考文献- 40 -前 言随

9、着电脑和互联网的普及,网络聊天已经成为人们工作生活中传递信息、交流感情的重要工具。网络版的聊天软件种类繁多,如QQ、OICQ、MSN等,实现了随时随地上网聊天,给人们带来了很大的方便。但是这些聊天软件也存在以下不足:用户必须连接Internet;用户再工作时容易沉迷于网络聊天。为了方便单位企业内部的信息交流,减少不必要的财力和人力资源浪费,开发一个局域网聊天软件是非常必要的。现在,多渠道的信息源、网络化的数据分布、快捷医用的交互操作、智能化的分析决策等特点越来越成为衡量有两聊天软件的关键,因此,本人开发一个局域网聊天软件,该聊天软件是基于C#语言运行于.NET平台上,利用的技术主要是Socke

10、t通信和多线程技术,使用SQL Server 2000作为后台数据库管理。为实现和方便客户端间通信,在客户端进行了人性化的界面设计,用户可以注册号码,登陆界面时可选择是否保存密码,具有好友上线提示功能,部分按钮和收发消息时均有声音提示。第1章对本次课题的背景及意义、课题现状、课题内容与目标进行了深入的阐述。第 2 章介绍了系统的开发环境和关键技术,例如Socket编程技术,多线程开发技术等。第 3 章是系统分析与设计。将对系统进行需求分析,对组成系统的功能模块进行划分,对每个模块将要实现的功能进行阐述和说明。对系统的结构进行设计,设计数据库。第4章是系统实现,分别介绍了服务器端和客户端每个功能

11、的执行过程,画出两个模块的流程图。第 5 章介绍系统开发中遇到的难点及相应对策。最后,将对本设计进行归纳总结,全面阐述本次设计中作者的体会。第1章 概 述 1.1 课题背景及意义近年来,随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。为了解决上述矛盾,人们提出了开发局域网聊天软件

12、的构想,通过局域网聊天软件,企业员工可以随时的进行即时消息传递,召开网络会议等,有利于提高工作消息效率,同时又保护了企业内部信息的安全性。 本系统采用基于Socket的局域网通信工具的设计与实现的方法。基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。 基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具

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

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

15、标是能实现用户在客户端与服务器端传递文字信息。主要研究开发内容是:熟悉C#和SQL SERVER2000服务器的配置,搭配系统开发平台,探索在此开发平台下,利用socket编程技术、多线程开发技术、TCP、UDP协议等进行局域网聊天软件的实际开发。第2章 系统开发环境和关键技术 2.1 开发环境我所设计的是一个面向中小型机构内部通信需求的局域网即时信息软件,要在短时间内开发出来并且要满足客户要求,无论是硬件还是软件都要选择合适,要求如下:开发设备应该完备;开发机器的性能必须稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多的平台上运行;要求运行机配置尽可能低档。对此,我们选择的硬件环境和

16、软件环境如下: 1、 硬件环境 处理器:Intel Pentium PIII或更高处理器 内存:256MB或更高 网络:局域网开发该系统应尽可能采用高档的硬件。因此,在应用时应采用更好的配置。2、 软件环境 操作系统:Windows 2000 /Windows XP / Windows 2003 开发平台:Microsoft Visual S开发语言:C#后台数据库: SQL Sever 20002.2 关键技术2.2.1 .NET Framework和C#.NET Framework类似于Java虚拟机,它不但使Internet上运行的应用程序更容易被开发,而且也可用于开发运行于Window

17、s桌面上的传统业务应用程序。它为创建、部署以及管理安全、强大、高效的应用程序提供了前所未有的最大支持。.NET Framework是一个创建、部署和运行应用程序的多语言平台环境,.NET支持的语言使用的基类库由.NET Framework类库(FCL)提供。C#是Microsoft公司设计的一种编程语言。它松散地基于C/C+,并且有很多方面和Java类似。Microsoft是这样描述C#的:“C#是从C和C+派生来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C+编程语言家族移植过来的,C和C+的程序员会马上熟悉它。2.2.2 SQL Server 2000SQL Serve

18、r 数据平台 SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQL Server 2000 为IT专家和信息共作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2000 为不同规模的企业提供了一个完整的数据解决方案。2.2.3 WINDOWS SOCKETS网络编程接口选定WINDOWS平台开发网络通信程序,可以选择WINDO

19、WS的SOCKETS编程接口,Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Windows sockets无疑是我们进行网络编程的利器。所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图2-1所示: 图2-1 Windows So

20、ckets实现通讯工作的各层关系图2.2.4 多线程开发技术多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率(系统跑得多快?)和性能(系统工作正常?)之间做一个权衡的时候。恰当的使用多线程可以极大的提高系统性能。使用多线程的好处有以下几点:使用线程可以把占据长时间的程序中的任务放到后台去处理;用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度;程序的运行速度可能加快;在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。在本质上和结构来说,.

21、NET是一个多线程的环境。有两种主要的多线程方法是.NET所提倡的:使用ThreadStart来开始你自己的进程,直接的(使用ThreadPool.QueueUserWorkItem)或者间接的(比如Stream.BeginRead,或者调用BeginInvoke)使用ThreadPool类。一般来说,你可以手动为长时间运行的任务创建一个新的线程,另外对于短时间运行的任务尤其是经常需要开始的那些,进程池是一个非常好的选择。进程池可以同时运行多个任务,还可以使用框架类。对于资源紧缺需要进行同步的情况来说,它可以限制某一时刻只允许一个线程访问资源。这种情况可以视为给线程实现了锁机制。线程的基类是S

22、ystem.Threading。所有线程通过CLI来进行管理。2.2.5 TCP/IP协议、UDP协议网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进

23、行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询-应答的服务.TCP和UDP服务通常有一个客户/服务器的关系。两个系统间的多重连接是这样相互确认并协调一致的,TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: 源IP地址 发送包的IP地址。 目的IP地址 接收包的IP地址。源端口 源系统上的连接的端口。 目的端口 目的系统上的连接的端口。端口是一个软件结构,被客户程序或服务进程用

24、来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25。这些端口号是“广为人知”的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。2.2.6 Client/Server结构(客户机/服务器模式)Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构。C/S结构软件分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备

25、,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。C/S结构的优点是能充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。第3章 系统分析与设计 3.1 系统分析3.1.1 系统

26、需求聊天交流是目前互联网提供的主要内容。聊天系统有多种实现方式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登陆统一的聊天服务器。在基于Socket的聊天系统中,主要有两种角色:服务器和客户端,不同的客户端登陆集中式的服务器,通过服务器将一个客户端发出的信息推送到其他所有客户端。基于Socket的聊天系统最早实现是使用网页刷新方式,通过客户端不断地自动刷新,将服务器端整个页面内容下载到客户端显示,这种方式的聊天速度慢,而且有刷屏现象,很快被更新的聊天技术所替代。 聊天系统在客户端和服务器之间主要传送的是文字信息,服务器端只需要把最近的文字信息

27、推送到客户端,这样减少了网络传输内容,节省了网络传输的时间,无疑提高了聊天速度。这种“推”技术是目前基于Socket聊天系统的主要实现技术。在基于Socket的聊天系统,客户端和服务器必须保持随时随地的连接。这有别于普通Web浏览的连接方式。在使用浏览器访问服务器时,先由客户端发出HTTP协议,然后服务器响应处理这个客户端的响应,再返回处理结果;请求(Request)和响应(Response)是一种一对一的前后因果关系。而在基于Socket的聊天系统中,客户端发出聊天信息的同时,客户端也在接受服务器发送过来的其他人的聊天信息,因此,请求和响应不存在那种前后对应关系,是两种分别独立进行的进程。因

28、为服务器任何时候都可能发送信息到客户端,因此,客户端和服务器一旦建立连接,必须能让服务器在以后发送中寻找定位到这个连接。局域网聊天系统使该系统的用户能够通过客户端登入到该系统,然后直接与系统交互。首先,需启动服务器,进行服务器的配置,进行正确的服务器配置和数据库连接并测试成功后,开启服务器。接下来,在客户端,该系统的用户能够通过登陆界面进入,然后直接与系统交互,进行文字传送。本系统支持的活动列表如下:(1) 配置服务器,连接数据库;(2) 开启服务器;(3) 用户注册一个八位数的账号;(4) 用户登陆系统;(5) 用户可修改密码;(6) 用户与系统交互,进行文字传送;(7) 用户好友登陆后,自

29、动弹出系统消息,提示有好友上线;(8) 用户登陆后,可查找,添加和删除好友;(9) 用户可以下载好友分组,刷新在线资料;(10) 传送文字、用户上线时有提示音;3.1.2 需求分析A、识别参与者通过对系统需求的分析,可以确定系统中有两个参与者:普通用户和管理员。参与者的描述如下:(1)普通用户描述:普通用户可以注册QQ号码,登陆聊天系统,添加好友,文字传送,上线提示。示例:注册的普通用户。(2)管理员描述:管理员除了有普通用户所有权限外,还具有其它权限:配置服务器,开启服务。B、识别用例经过识别参与者后,对系统需求进一步分析,可以确定系统中有如下用例:(1)Registe(注册)本用例提供了普

30、通用户注册的功能。(2)Login(登陆)本用例提供已注册的普通用户和管理员登陆系统的功能。(3)Addfriends(添加好友)本用例提供了普通用户添加好友功能。(4)online(上线提示)本用例为普通用户和管理员提供好友上线提示的功能。(5)startserver(开启服务)本用例为管理员提供了开启服务的功能。(6)configserver(配置服务器)本用例为管理员提供了配置服务器的功能。识别出系统的参与者和用例后,建立如图3.1的系统用例图。3-1系统用例图3.2 系统设计3.2.1 设计原则考虑到系统的可重用性和伸缩性,需要将本系统的网络通信底层和应用系统分离开。这样,基于可重用的

31、网络通信层,可以实现其他各种实时性较高的应用系统。本系统在架构设计上将分3个层次,如图3-2所示。Socket底层接口层聊天、游戏等应用系统图3-2架构层次图本系统最底层是Socket通信层,将负责客户端和服务器之间快速的数据交换,它通过接口层和最上面应用层保持实时数据联系。用户从客户端进入到本系统前,将实现统一的用户登录验证机制。Socket底层设计分两大部分:协议设计和连接处理设计:协议设计和连接处理设计;接口层的目的是提供底层和应用蹭一个中介媒体的作用,但是不能设计得太复杂,以免延误数据传送时间。3.2.2 架构设计在本系统中,客户端需要将用户输入的聊天信息发往服务器,那么建立一个线程一

32、直实现发送功能,由于客户端监视用户输入也有一个监视线程在运行。这样,有两个线程各司其职。一个负责监视输入,另外一个线程负责将输入发送出去。那么再这两个线程之间如何通信?最经常使用的办法是使用队列(Queue)模式。Queue模式是处理消息通信的基本办法,如图3-3所示。提取加入队列Queue图3-3 队列Queue模式本系统中应用Queue模式有一个问题,加入动作是由用户输入决定的,一旦有用户输入,就会发生假如动作,那么,提取线程会在队列另外一段进入死循环不断的读取,这样才能在队列中一旦有对象事件时,能够被立即提取出来,因此必须使用while(!Thread. interrupted()实现死

33、循环。但是必须注意到,每次循环中的提取动作执行是有前提条件的队列中有对象事件。如果在有对象事件时,通知提取线程,这样可以避免提取线程一直霸占CPU“傻等”,使用线程的Monitor.Wait(objectobj)和Monitor.PulseAll(object obj)可以达到这个目的。提取线程的循环体内设置Monitor.Wait(objectobj)进行中断等待,加入对象后,执行Monitor.PulseAll(object obj),这样提取线程将中断等待,从Queue中读取假如对象。线程再中断等待时,将释放CPU的霸占,这样就有效率地利用了CPU,如图3-4所示。提取队列Queuewa

34、it加入 图3-4 改进后的队列Queue模式由此可见,并不是说使用了多线程就能提高系统性能,更重要的是还要注意提高CPU使用效率,防止Block发生。提高多线程的使用效率还必须了解下列几点:(1)线程运行的次序并不是按照创建他们时的顺序来运行的,CPU处理线程的顺序是不确定的,如果需要确定,那么必须手工介入。(2)要避免大量线程运行时发生堵塞现象,可以通过设置线程优先级来实现,但是同时又必须注意到,再大量线程被堵塞时,最高优先级的线程先运行,但不表示低级别线程不会运行,只是运行概率较小而已。(3)检查所有可能Block的地方,尽可能多的使用sleep;尽可能延长sleep(毫秒数)的时间。但

35、是,当多线程数量很多时,每次启动线程的开销也非常大,有时创建新线程的服务器再创建和销毁线程上花费的时间和消耗的资源,可能要比花再处理应用逻辑运算的时间和资源要多得多。除了创建和销毁线程的开销之外,活动的线程也会消耗系统资源。当应用系统突然遭遇巨大访问量访问时,服务器内存中会创建太多的线程,直至资源完全消耗,这对于应用系统的正常运行是有致命伤害的。为了能再访问剑锋时限制线程开启数目,以及减少线程频繁创建和销毁带来的系统开销,提高系统的大量访问量处理性能和速度,需要事先创建一定数量的线程供调用者循环反复使用,这也就是“池”技术。线程池的基本原理也是基于队列Queue事先,通过不断查询队列Queue

36、是否有可以运行的线程。如果有,就立即运行线程;如果没有,就锁定等待,直至有新的线程假如被出发解锁。C#提供的System.Threading.ThreadPool对象可以解决这一问题。使用ThreadPool和事件驱动的编程机制,程序可以注册一个System.Threading.WaitHandle对象(WaitHandle是C#编程中等待和通知机制的对象模型。)和System.Threading.WaitOrTimerCallback对象,所有的线程无需自己等待WaitHandle的释放,ThreadPool将监控所有向它注册的WaitHandle,然后在WaitHandle被释放后调用相应

37、WaitOrTimerCallback对象的方法。本系统中,聊天系统核心功能的处理可以采取线程池设计,这样可以加快对每次聊天信息的处理时间和提高处理速度。整个系统的核心底层是非堵塞I/O技术,通过使用这一新技术,可以实现底层网络I/O的无堵塞、流畅地读写,为整个系统的高性能运行奠定了坚实的基础。非堵塞的Socket I/O有两大部分:服务器和客户端。在两端都将采取这一新技术,根据TCP/UDP不同,又分别有两套Socket详细实现。3.2.3 工作流程只有充分地了解了聊天程序的工作流程,才能对整个系统的理解更加深刻,聊天程序的工作流程如图3-5所示。加载套接字库初始化套接字绑定本地机到套接字向

38、指定IP地址发送数据关闭套接字库结束聊天创建线程用于接受数据图3-5聊天程序的工作流程3.2.4 功能设计局域网聊天系统以局域网内的用户为应用对象,经过各方面需求分析,该系统主要由服务器端和客户端两部分构成,各功能模块如图3-6所示。局域网聊天系统服务器客户端开启服务器停止服务器配置服务器关闭服务器上线提示登陆注册文字传送添加好友图3-6局域网聊天系统功能模块图3.2.5 数据库设计这一设计阶段是在需求分析的基础上进行的,目的是设计出能够满足用户需求的各种实体以及它们之间的关系,为逻辑结构设计打下基础。本系统主要涉及到的实体有:用户信息实体、群组信息实体和好友关系信息实体。l 用户信息的实体E

39、-R图如图3-7所示:用 户登陆密码用户QQ号码用户昵称图3-7 用户信息的实体E-R图 l 群组信息的实体E-R图如图3-8所示:群 组群组名称群组编号群组所属者QQ号码图3-8 群组信息的实体E-R图l 好友关系信息的实体E-R图如图3-9所示:好 友群组编号用户QQ号码好友关系编号好友QQ号码图3-9 好友关系信息的实体E-R图系统具有以上描述的三个数据实体,各实体之间的实体关系如图3-10所示:用 户添加、修改群组信息添加、修改、删除好友关系属于m1n1mn图3-10 实体之间的关系E-R图l 本数据库中包含三个表,用户信息表(UserInf),群组信息表(GroupInf),好友关系

40、信息表(FriendList),三个表的具体描述如下表所示:表3-1局域网聊天系统数据库设计表局域网聊天系统数据库设计表表名称:UserInf用途:保存用户基本信息 主键:cQQNum字段类型描述空说明cUserNamechar(10)用户昵称Y如:carocQQNumchar(8)用户QQ号码自动增加vcQuserPwdchar(50)登录密码表名称:GroupInf用途:保存群组信息 主键: iGroupId字段类型描述空说明iGroupIdint(4)群组编号cGroupNamechar(10)群组名称如:我的好友GroupOwnerchar(8)群组所属者QQ表名称:FriendLis

41、t用途:保存好友关系 主键: iFriendId字段类型描述空说明cQQNumchar(8)用户QQ号码自动增加cFriendNumchar(8)好友QQ号码iGroupIdint(4)群组编号iFriendIdint(4)好友关系编号自动增加第4章 系统实现4.1 服务器端设计实现4.1.1 服务器端工作流程图服务器端的工作主要是配置服务器并开启服务,其工作流程如图4-1所示。输入服务器IP是否存在开启服务Y关闭服务器N主界面配置服务器是否配置成功YN退出服务器图4-1 服务器端工作流程图4.1.2 服务器主界面服务器端的控制中心,主要实现服务器的开启、停止、配置、关闭功能。如图4-2所示。

42、图4-2 服务器主界面4.1.3 服务器的配置服务器配置是服务器端的重要组成部分,用户可以进行服务器IP和服务端口号的配置,同时还可以配置数据库服务器的IP,数据库名称,用户名和密码。如图4-3所示。图4-3 服务器配置4.1.4 服务器的开启服务器配置测试并保存成功后,便可以开启服务。开启服务器后界面左边的图标符号将改变,关闭服务器后,服务器会自动缩小到屏幕右下角,并在右下方处弹出提示:QQ2008服务管理器已开启。如图4-4所示。图4-4开启服务4.2 客户端设计实现4.2.1 客户端工作流程图客户端的是系统与用户交互的主要模块。在客户端,用户可以注册QQ号码、登陆系统、相互进行文字传送、

43、添加好友。其工作流程如图4-5所示。注册账号输入信息是否合格注册成功Y登陆是否成功YN添加好友用已注册账号登陆Y登陆窗口是否拥有账号NN传送文字N登陆成功好友是否在线退出系统图4-5客户端工作流程图4.2.2 客户端登陆主界面客户端登陆窗口是系统与用户进行直接交互的第一扇窗口,通过此窗口,用户可以进行注册和登陆,同时可以选择是否记住密码,如图4-6所示。图4-6 客户端登陆窗口4.2.3 注册注册模块是客户端程序的重要组成部分。系统根据已有的数据库中用户QQ号码,自动加一生成新的QQ号码,用户可以编辑自己的昵称和密码进行注册。如图4-7所示。图4-7 注册QQ号码4.2.4 登陆登陆是客户端程

44、序的基本组成部分。用户输入正确的、有效的、匹配的QQ号码和QQ密码后,点击登陆按钮,系统会弹出登陆中的窗体,如图4-8所示;登陆成功后界面如图4-9所示。 图4-8 用户登录中的界面 图4-9 登陆成功后的界面4.2.5 文字传送文字传送是客户端程序的核心模块。通过双击QQ好友列表内的在线的好友昵称,便可与对方进行文字传送,按Enter键进行发送,如图4-10所示。图4-10 文字传送界面4.2.6 添加好友添加好友是客户端程序的重要功能。用户先输入对方的QQ号码进行精确查找,查找成功后,便可将对方添加到QQ好友列表中。如图4-11所示。图4-11 添加好友界面4.3 系统功能特点l 功能人性

45、化,在客户端,好友上线、传送文字时均有声音和消息提示;l 实用高效,该系统具有传统聊天软件的基本功能,并在局域网成功得以实现;l 用户操作界面美观简洁,本系统模仿当下最流行的聊天软件腾讯QQ,对登陆窗口和消息传递窗口都进行了精心的设计和美化。第5章 难点及对策5.1 在C#中处理Socket网络异常断开的方法在服务端开发中我碰到了各种各样的网络异常断开现象。归纳起来主要有以下两种:1、客户端程序异常。对于这种情况,我们很好处理,因为客户端程序异常退出会在服务端引发ConnectionReset的Socket异常(就是WinSock2中的10054异常)。只要在服务端处理这个异常就可以了。2、网络链路异常。如:网线拔出、交换机掉电、客户端机器掉电。当出现这些情况的时候服务端不会出现任何异常。对于这种情况在MSDN里面是这样处理的,我在这里贴出MSDN的原文:如果需要确定连接的当前状态,就要进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922