毕业设计_即时通讯系统设计说明书_第1页
毕业设计_即时通讯系统设计说明书_第2页
毕业设计_即时通讯系统设计说明书_第3页
毕业设计_即时通讯系统设计说明书_第4页
毕业设计_即时通讯系统设计说明书_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、孝自理N及¥广州学院Guangzhou College South China University of Technology本科毕业设计(论文)说明书即时通讯系统的设计与实现学 院计算机工程学院专业班级 09软件工程1班I摘要即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也 层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就 是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。闰属钞瘗啾5尻赖。本文分析了即时通讯系统的原理及其实现过程, 探

2、讨了 Socket技术与多线程技术在C/S 模式下的局域网即时通讯系统的应用。本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。系统主要采用C/S架构、C#编程语言、.NET开发平台、UDP通信协议以及Socket等技术来完成。主要实现的功能有注册、登录、聊天、发 送表情以及文件传输等功能。系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S 结构,数据库服务器、应用程序服务器端、应用程序客户端,按照此设计思想,可以将任 务合理分配到客户机端和服务器端,从而降低了系统的通信开销。此系统共分为两个模块:客户端模块和服务器端模块。通过运行、测试与分析,该多功能

3、聊天软件运行稳定、可靠, 具有一定的实用价值。沟燧金富爱建谴净。关键词:即时通讯;Socket; UDP; C#iiAbstractInstant messaging software is currently one of the most common computer users to communicate the way, a variety of chat software also emerge in an endless stream; the service provider offers more and more communication services. Insta

4、nt communication is the most basic function is the text data by computer are realized in the form of the exchange of ideas and communication, it has the advantage of convenience, as a new, cheap, fast, convenient way to communicate to create among the people 残鹫楼静铸源湃淑塑髓This paper analyzes the princip

5、le of instant communication system and its realizing process, discussesthe application of Socket network technology and multithreading technology in CVS mode of instant messaging system. This graduation design is to simulate the QQ chat software, the development of a text chat, file transfer and oth

6、er functions of the chat software. The system mainly uses C/S architecture, C# programming language,.NET development platform, UDP protocol and Socket technology to complete. The main function of registration, login, chat, send expression and file transfer functions. The system uses a client / serve

7、r (C/S) mode design, is a three layer C/S structure, database server, application server, client application program, according to the design idea, the system uses the C/S structure, the rational allocation of tasks to the client side and server, which reduces the communication overhead system. This

8、 system consists of two modules: the client and server end module. Through testing and analysis, operation, this multi-function chat software is stable, reliable, and has a certain practical value 皆 钢极mf!镇桧猪锥。Key words: Instant Messager; Socket; UDP; C#iii摘 要II.弹贸摄尔霁毙撰砖卤尻。AbstractI除养技箧颠W类蒋蔷。第一章 绪 论厦

9、礴恳蹒骈畤翥继骚。1.1 即时通信系统的概念常桢广鲫献选块网糊目。1.2 国内外即时通讯的研究现状 耨娅尽揖鹤惨屣茏题!。1.3 本课题的意义与主要工作内容糜丛妈翅为赡债蛭练济1.4 论文的组织结构2Tm圣僮龈讶骅汆。第二章需求分析和可行性分析 3呛俨匀谓鳖调砚金帛。2.1 需求分析3卧泻曾圣骋睨限期2.1.1 系统包含的功能 3凤袜备鄱®轮烂蔷。2.1.2 功能模块辘熟俣阉圄阊邺钱鼠2.2 系统可行性分析密搏乡it忏篓锲铃短2.2.1 经济可行性分析 瞿燮夥寤幸艮住铉锚金市赘。2.2.2 人力可行性分析 掌昙JW遥闫撷凄。2.2.3 技术可行性分析 胸锯询瞩稠.踪韦输翟。2.3 开

10、发环境和相关技术介绍 5懒震彦决绥I1饴3E锦。2.3.1 开发环境5BB绘燎诛髅既尻。2.3.2 Microsoft Visual Studio 2010介绍 M籁饕迳琐箝奥鸥娅番2.3.3 .NET平台一氽旗黄硕饨芹龈话鹫。2.3.4 C#语言简介6峰隔槿.相翱IB荥。2.3.5 Socket技术作侧mwmi绚®j知仁2.3.6 TCP/IP协议昆缢蝶竟州严豪2.3.7 Client/Server结构(客户端/服务器模式) 7相域劳肉皆痫嫦胫汆。2.4 本章小结7、灭萦欢蜴鹫金帛。第三章数据库设计81mt出趣甲涉曜统箪3.1 SQL Server数据库介绍810顽谄撵棒揣爨裁。3

11、.2 理论基础&擞gBO迁择植秘豫3.3 数据库E-R图 9噜蟒富贸恳弹演颔泉。3.4 数据库设计 9:鹤瓷赢事晴孙滋御赘。3.4.1 数据库逻辑设计密阐IW迳醇啸重晨凉。3.4.2 数据库物理设计 1俗辞解谄动律泻熟3.5 数据库关系图 1觐,缘锡嗫函端铸。3.6 本章小结1侬绐辎檄库。第四章 详细设计 M 与渍蟆俾阅剜鲫哥1藏。4.1 多线程设计 1.1封忧蒋氟if苍,H蕖悯鹫。4.2 服务器的设计 12颖刍堇蟆悖亿顿裳赔沈。4.3 数据库连接14滥金詹理聚翅Pits窥聪。4.4 主要功能模块介绍1.5 跳彝跻鳗鸿钱京。4.4.1 用户注册 1.5挤电爰结加噎哓类。4.4.2 用户

12、登录 1.8赔旗申谄觎聚辽辈袜金卷。4.4.3 用户聊天 23一碾髓丁决窿静卜阳工4.4.4 添加好友 24裳檬祕Mffi颤谚剑芈蔺。4.4.5 删除好友26 仓姬世嘱珑言古鹫。4.5 本章小结27绽离琏顿娱蛭蠲/1。第五章重难点分析及解决方案 29骁顾烽翳默鬻稳®厚5.1 服务器监听设计29琐针煤暧惮银缰歌箭凉。5.1.1 服务器端监听分析 29金留诗艳损楼条世5.1.2 核心、代码展示 29栉缎欧锄素种胎瑶镂。5.2 用户注册.30 辔惮楝刚殓撰瑶丽阉应。5.3 用户登录.31 崛扬斓滇淌辐浪兴涣蔺。5.4 发送表情与发送文件3 2 爵叁搪言内烬忧毁厉鹫。5.5 获取好友列表 3

13、6则觎惬靠痪K晖园栋沈。5.6 本章小结.37胀鳗弹奥秘舔户挛钮聪。第六章系统测试与发布38 BW厕寿朗诵帮废捕叫6.1 系统测试 .38禀虚媛赈维案脓扩鹏枭。6.1.1 测试目的38 隔篁境鞋ff烧呜旧指6.1.2 系统测试常用方法 38 氯唠麓苣鞍断者阍氤6.1.3 测试结果 39钢荣产涛困蔺。6.2 系统发布.40 ,卜懿磅惬触乐鹏烬解鼠6.3 本章小结 .41 .饱竞争音旨微船癞别演。第七章 系统的不足与展望 .42因铉俯欤谦.饺竞荡赚。7.1 系统的不足 .42莹谐龌新赏组减。7.2 系统的展望 42 肃鹏铺轿骤镣缚褥耀。7.3 本章小结42纳畴鳗呐mo腻鳌银结论.43凰撵,浦铁频钙

14、蓟纠庙。参考文献44灭暧骇舸昔IS靓馔H。致朗寸.45镑鹏饷£伍镖赞浑蒯留。V第一章绪论第一章绪论1.1 即时通信系统的概念即时通讯(Instant Messenger简称IM ),是指能够即时发送和接收互联网消息 等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰 富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不 再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办 公协作和企业客户服务等为一体的综合化信息平台。是一种终端连网即时通讯网络的服务。即时通讯不同于e-mail在于它的交谈是即时的。大部分的即时通讯

15、服务提供了 状态信息的特性一显示联络人名单,联络人是否在在线与能否与联络人交谈。携频噪障涝谴P!泸。近年来,随着无线通信的快速发展,移动互联网为传统的Internet注入了新的活力,同时也为即时通讯带来了一场革命, 交互双方已经不再局限于以网络终端设备为 唯一的接入手段,PC机在传统的网络即时通讯中所起的作用正在被手机、平板电脑 所取代。这使得即时通讯更加大众化和人性化,即使不会使用电脑的人现在也可以享受到即时通讯给人们带来的变化。撤展雏纨颗锌讨跃满雕纵观即时通讯软件业的迅速发展, 设计并开发一个即时通讯平台,对于现阶段的 学习和研究,都是极为有意义的,基于这个前提和起因,我选择了设计即时通讯

16、系统 作为我的毕业设计。夹琬闾轮鼠档蓦迁镂源1.2 国内外即时通讯的研究现状从商业研究的方面看,即时通讯软件从最初的免费政策,到逐渐挖掘和整合创新 多种盈利模式,即时通讯市场收入逐步扩大,而为企业用户提供商务即时通讯的一整 套解决办法将成为未来即时通讯企业角逐的热点和盈利的新空间1。视黜馒碘椅脑钧!即即时通讯运营商的盈利模式包括互联网增值服务、无线网增值服务、广告服务和 企业即时通讯服务。以前,即时通讯运营商的盈利方式还仅局限于互联网即时通讯增 值业务,但是随着市场的发展和功能的开发,无线网络增值业务和广告业务更多的参 与到运营商整体收入中来2。囿微钊爵端球谶黛从学术化的即时通讯研究方面看,国

17、内外公开发表的论文非常少 3。仅有的几篇 集中在即时通讯基本服务元素的定义方面4与即时通讯软件技术实现、编程技巧等方 面5。还有部分关于安全性的讨论6。篇彳翎喻麻乔级的乔断总的说来,国内外关于即时通讯的研究还不够系统和深入。1第二章需求分析和可行性分析1.3 本课题的意义与主要工作内容聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软 件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出实现 的相关理论与知识。雕懑轲金名侥张磔阵轸蔼。本课题主要研究内容包括以下几个方面:(1)查找相关

18、书籍与文献,了解C/S构架并搭建.NET开发平台(2)查找相关资料,学习C#开发语言以及SQL Server数据库的使用,(3)查找现阶段基于局域网的即时通讯软件的发展现状以及相关功能(4) Socket编程技术在上述基础上,做出即时通讯软件的相关功能如下:(1)用户注册功能(2)用户登录功能(3)添加好友功能(4)添加分组功能(5)删除好友功能(6)删除分组功能(7)移动好友到指定分组功能(8)即时聊天功能(9)文件传输功能1.4论文的组织结构第一章:绪论。第二章:需求分析和可行性分析,分析了系统的需求和系统实施的可行性。第三章:数据库设计,介绍了本系统所使用的数据库、数据库的设计、数据库E

19、-R图以及数据库关系图。第四章:详细设计,本章主要进行了系统的模块设计,包括多线程设计、服务器 设计、数据库连接以及阐述系统各功能模块。厉骐鎏农杀情狱景则晒。第五章:重难点分析及解决方案,本章着重分析了本系统的重难点及其解决方案。第六章:系统测试与发布,本章主要介绍了系统测试的环节、展示了测试的结果 以及系统的发布。第七章:系统的不足与展望,主要陈述了本系统存在哪些不足的地方以及对系统 的展望。第二章需求分析和可行性分析2.1 需求分析此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。 本聊天工具由

20、服务器端程序和客户端程序两部分组成,整体采用.NET平台开发,采用UDP通信协议,使用Socket技术。服务器是可以进行监听,记录客户端请求和验 证客户端身份的合法性,客户端程序面向实际用户,它有必要的界面的按钮,向用户 提供网络即时消息的功能。镀锌过润启丽骆蠲激 2.1.1系统包含的功能本聊天系统需包含如下基本功能:(1)客户端的主要功能:用户注册 用户登录 添加好友 获取好友列表 与好友聊天 发送表情功能 文件传输(2)服务器端的主要功能: 启动服务 建立连接 监听客户请求2.1.2功能模块聊天工具由服务器端和客户端组成, 要分析清楚两方面所要完成的任务, 对设计 来说,等于完成了一半。根

21、据聊天的通信步骤,系统的功能模块如图 2-1所示。橙贰轲 誉箜该槛加增赛。(1)服务器端服务器端完成3大功能:建立连接、断开连接、监听客户请求。这 3大功能的具 体含义如下:建立连接:系统启动时建立连接,绑定本地计算机的一个端口,不断地监 听是否有客户端请求连接或者断开连接。断开连接:停止监听,系统断开连接。监听客户请求:服务器端是个信息枢纽,所有向服务器端请求的客户端的 信息都要传到服务器端,再由服务器根据客户端的请求按要求分发出去, 客户端再向服务器端发送各种请求,如:登录,发送消息,获取好友列表 等。通驾赚隆宾呗撷鹉讼凑。图2-1系统功能模块图(2)客户端客户端完成以下几大功能:用户注册

22、、用户登录、添加好友、聊天功能、发送表 情、文件传输功能。用户注册:客户端与服务器建立通信通道,服务就收客户端的注册请求。通过系统的注册界面,输入账号和密码,完成注册。该栋谖礴豁中羸I辘锭。用户登录:客户端与服务器建立通信通道,随时接收来自服务器的监听。通过系统的登录界面,输入账号和密码,然后发送到服务器进行验证。如果验证通过,服务器则返回用户的好友信息。邮女浑1W苹埔品仑庙。添加好友:用户在登录系统之后可以添加好友。聊天功能:客户在与好友建立通信连接后,便可以与好友进行聊天,聊天 时发送的是文本信息。发送表情功能:与好友聊天时,可在文本信息中插入表情。文件传输:用户之间可以相互传送文件以实现

23、文件共享2.2 系统可行性分析可行性分析(Feasibility Analysis)也称为可行性研究,是在系统调查的基础上, 针对新系统的发开是否具备必要性和可能性,对新系统的开发从各方面进行分析和研 究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价 在尽可能短的时间内确定问题是否能够解决。膏熊讹嬲梗业燮塾罗斯。2.2.1 经济可行性分析基于局域网、C/S架构的即时通讯系统在很多资料上都能找到,包括书本和网络 上都有很多类似的系统,开发这样一个系统所需要的花费不是很大,需要的开发工具、 需要的软件等都可以在网上找到试用版,不需要购买,所以不需要花费太多金钱,在经济上完

24、全能够完成本系统的设计。鳗崎娄悦温鸭骞。2.2.2 人力可行性分析完成本系统不需要太多的人力资源,有老师和同学的帮助,也可以在网上找到与本系统相关的很多资源,在人力资源上能够完成本系统的设计。描L虚络涉鳗物薪予源。2.2.3 技术可行性分析基于.NET的即时通讯软件,实现一般通讯软件的基本功能(登录,聊天,退出), 没有十分复杂的其他功能,如:登录、添加好友、与好友聊天、传输文件等基本的功 能,这些都能够运用所学的知识实现。隶言匡荧鉴雅纲榭鬻台饕本系统使用的编程语言是 C#语言,所使用的平台是.NET平台,对于VS2010的 使用还是比较熟悉。在校已学习过 C#编程。浏期濯着捌票横碗奏。完成这

25、个通讯软件的基础知识大都已经具备, 同时,在网上也可以找到许多资料, 如CSDN、看雪论坛等能够查到许多开源源代码,自己能够充分运用这些网络资源, 完成这个毕业设计。金巴烦罚檀笔磐飕镉糊。2.3 开发环境和相关技术介绍2.3.1 开发环境本设计是一个局域网即时通讯软件,要在短时间内开发出来并且满足客户要求,无论是硬件还是软件都要选择合适, 要求如下:开发设备完善;开发机器的性能必须 稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多的平台上运行;要求 运行机配置尽可能低档。对此,我选择的硬件环境和软件环境如下:惬轨缉蕤绅顽阳豫tn。硬件环境(1)处理器:Intel Pentium PII

26、I或者更高的处理器(2)内存:256MB或更高(3)网络:局域网软件环境(1)操作系统: Windows XP/Windows 7(2)开发平台:Microsoft Visual Studio 2010(3)开发语言:C#(4)数据库:SQL Server 20052.3.2 Microsoft Visual Studio 2010 介绍Visual Studio是微软公司推出的开发环境。Visual Studio 2010同时带来.NETFramework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-C

27、TP),并且支持开发面向 Windows的应用程序。贞厦给鳍1牵制麟留葡 2.3.3 .NET 平台.NET就是微软的用来实现 XML , Web Services, SOA (面向服务的体系结构 service-oriented architecture和敏捷性的技术。.NET是微软的新一代技术平台,为敏 捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳 定的和高Tt能的。.NET是基于Windows操作系统运行的操作平台,应用于互联网的 分布式0嗜鳍级厨胀锢碉毁新。2.3.4 C#语言简介C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的

28、高级程序 设计语言。C#是微软公司研究员Anders Hejlsberg的最新成果。C#起来与Java有 着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。它是微软公司.NET windows网络框架的主角。蓟镇竖牍绐蝌W铃 骞。2.3.5 Socket 技术所谓Socket通常也称作 篡接字”,应用程序通常通过 套接字”向网络发出请求或 者应答网络请求。根据连接启动的方式以及本地套接字要连接的目标, 套接字之间的 连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 龄践砚语蜗铸转黜®'裸。服务器监听:是服务器端套接字并

29、不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。绅薮疮解牙标於夏连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请 求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于 监听状态,继续接收其他客户端套接字的连接请求。饪梦狞厨若住卜诬苧径凛。2.3.6 TCP/

30、IP 协议TCP/IP是国际互联网所采用进行网际互连的通信协议7 ,实际所称的TCP/IP协 议包括了在国际互联网络应用的一组协议,互联网协议族是此协议族的另一个名字 80煌毙潜贲粤。TCP协议在因特网协议族(Internet protocol suite)四层协'议中,TCP层是位于IP层之上,应 用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但 是IP层不提供这样的流机制,而是提供不可靠的包交换。铸岂涛孰跃轮前嫄键。TCP服务提供了可靠性、有效流控制、数据流传输、多路复用技术和全双工操 作等。(2) UDP协议UDP是User Datagram Proto

31、col的简称, 中文名是用户数据报协议,是 OSI参 考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。撷伪氢黜祇需鞫e庞。在选择使用协议的时候,选择 UDP必须要谨慎。在网络质量令人不十分满意的 环境下,UDP协议数据包丢失会比较严重。但是由于 UDP的特性:它不属于连接型 协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在 传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产 生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。踪1掺钓K绫St发新。 2.3.7 Clie

32、nt/Server结构(客户端/服务器模式)Client/Server或客户/服务器模式:Client和Server常常分别处在相距很远的两台 计算机上,Client程序的任务是将用户的要求提交给 Server程序,再将Server程序返 回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请 求,进行相应的处理,再将结果返回给客户程序。i机职金映蚀骞。2.4本章小结本章主要对本系统的相关技术进行介绍,对基于C/S即时通讯的原理有一定的了 解,对数据信息在网络中传输的原理都有进一步的认识, 从需求分析和可行性分析出 发讲述系统的系统设计架构、需求分析、技术可行性分析以

33、及对系统的开发环境和相 关技术进行了详细的介绍。为设计本系统构建了一定的理论体系。鬻1掺银锭试监酬解I。第三章数据库设计3.1 SQL Server数据库介绍SQL Server是一个关系数据库管理系统。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于 1988年推出了第一个 OS/2版本。在 Windows NT推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镶了, Microsoft 将SQL Server移植到 Windows NT系统上,专注于开发推广 SQL Server的Windows NT版本。Sybase则较

34、专注于SQL Server在UN IX操作系统上的应用。传修执解I号燎 月詹喻SQL是英文Structured Query Language勺缩写,意思为结构化查询语言。 SQL语 言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多 数流行的关系型数据库管理系统,如 Oracle, Sybase, Microsoft SQL Server, Access 者B采用了 SQL语言标准。缜霞怅涣靓蟠浅舸明髓。3.2 理论基

35、础设计关系数据库时,遵循不同的规范要求,设计出合理的关系型数据库,这些不 同的规范要求被称为不同的范式, 各种范式呈递次规范,越高的范式数据库冗余越小 9。骥擅帜禳摩兖梗是绛粤。(1)第一范式(1NF)就是无重复的域。在任何一个关系数据库中,第一范式是对关 系模式的设计基本要求,一般设计中都必须满足第一范式。 不过有些关系模型中突破 了 1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足 1NF的最低 要求,主要依赖于所使用的关系模型。瘫喧导骋艳捣感搬I。(2)第二范式(2NF)要求实体的属性完全依赖于主关键字。(3)第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主

36、键子信息。数据库设计是进行系统开发的基础性工作, 设计方案的好坏是影响开发的重要因 素。数据库设计要遵循以下原则10: 鸽夺圆鳏腌翻蹦。(1)数据的完整性:保证数据库中的数据准确。(2)数据的结构化:数据库设计必须层次分明,分布合理。数据库必须高度结构 化,保证数据的结构化、规范化和标准化。榄阈团皱鹏版蕴。(3)减少数据冗余:数据库系统应该尽量减少数据冗余,节省存储空间,提高数 据质量。消除数据库表中非主属性对主关键词的非完全依赖性和非主属性对主关键词7第四章详细设计的传递依赖性,将二维表转化为第三范式,是降低数据冗余的有效方式。逊输吴贝义鲫a力停犹疑。3.3 数据库E-R图用户和好友关系之间

37、是多对多的关系, 一个用户可以对应多个好友关系、 一种好 友关系只能对应一个用户。数据库 E-R图如图3-1所示。 帽觇匮骇ft红卤龄镰潟。图3-1数据库E-R图153.4 数据库设计3.4.1 数据库逻辑设计即时通讯系统总共使用到了两张数据表,用户信息表与用户关系表。用户信息表用来记录所有已注册的用户的登录账户、密码、姓名等信息,userid即用户账号为主键,word用于保存密码,name保存用户名字,用户信息表的详细结 构如表3-1所示。言甬终决慎区面s侧泉端表3-1用户表列名数据类型是否主键可否为空useridvarchar(50)是否wordvarchar(50)否否namevarch

38、ar(50)否否好友关系表用来记录用户的好友关系,其中userid为主键,friendid用来记录好友的ID, friendid不可以为空,好友关系表的详细结构如表3-2所示。医涤保削 1ml办的臬表3-2好友关系表列名数据类型是否主键可否为空useridvarchar(50)是否friendidvarchar(50)否否3.4.2 数据库物理设计(1)表名:用户信息表此表用来记录所有已注册的用户的登录账户、密码、性别等信息,userid即用户账号为主键。(2)表名:用户关系表此表用来记录用户的好友关系信息,userid为主键。3.5 数据库关系图用户信息表的主键tmid作为好友关系表rtmi

39、d和rfriend的外键,输入好友的账 号,添加成功后,好友的账号将会显示在好友列表中。胪当为送头鹿鳍啰晕毒3.6 本章小结本章主要介绍了 SQL Server数据库和数据库的设计。数据库设计又包括数据表 设计和存储过程的设计。数据库表主要存储用户信息和好友关系信息,即时通讯系统 连接数据库后便可以读取数据库中的信息。鸽凑田辅幅烛属奖选锯。第四章详细设计4.1 多线程设计服务器需要和多个客户端同时进行通信,这就是服务器端的多线程。一旦服务器 发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进行通信。用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据排队而发生的延迟或者丢失

40、,可以很好利用系统的性能11。期翱!植怀毓颐噪悦废。点击服务器端窗体的“开始服务”按钮,调用 Listen开始监听,监听处理过程位 于单独的线程中,Listen的实现方法如下:靠部f荣揄悬寓public void Listen(int Port)tryUDP_Server_Port = Port;UDP_Server = new UdpClient(Port);thdUdp = new Thread(new ThreadStart(GetUDPData); thdUdp.Start();catch (Exception e)if (Sock_Error!= null)Sock_Error(e.

41、ToString();点击服务器端窗体的“停止服务”按钮,调用CloseSock停止监听,CloseSock的实现方法如下:涛JOS镂晋铁铸揪宪骗。public void CloseSock()Thread.Sleep(30);try UDP_Server.Close(); thdUdp.Abort();catch(Exception e) if (Sock_Error!= null)Sock_Error(e.ToString();当服务器端接收到客户端的请求后,调用GetUDPData函数来分析并获取客户端的请求,并进行处理,GetUDPData的实现方法如下:钿前斛瑞榭戴样说泻。publi

42、c void GetUDPData()while (true)trybyte口 RData = UDP_Server.Receive(ref _Server);if (DataArrival != null)DataArrival(RData, _Server.Address, _Server.Port);Thread.Sleep(0);catch (Exception e)if (Sock_Error != null)Sock_Error(e.ToString(); 4.2 服务器的设计服务器实现了服务器的多线程,服务器端有一个进程(或多个进程)在指定的端 口等待客户的连接信息。一时连接成功

43、,就可以按设计的数据交换方法和格式进行数 据传输。客户端只在需要的时候向服务端发出连接请求。戢曹加浇那适泞噂蜃服务器端主窗口如图4-1所示。图4-1服务器主窗口本窗体主要使用到了一个listview控件,分别用于显示已连接用户的ID、IP地址、 名字NAME、端口号Port, 2个Button控件。寺燥户践澜点击 开始服务”按钮触发Listen _Click事件,执行此操作后,结束服务”按钮的“Enabled(性变为“true, ”开始服务”按钮的“Enabled!性变为"false,既不再启用 这些控件,具体代码如下:嗫奂郦谖跳谟瓒兽粪。private void Listen_Cl

44、ick(object sender, EventArgs e”酷镰宠碓峻 祷胪貂 .sockUDP1 Listen(1433);button1.Enabled = false;button2.Enabled = true;其中 sockUDP1 Listen(1433)表示调用 sockUDP 的 tListen 开始监听。点击“Stop®钮触发Stop _Click事件,执行此操作后,“Sto限钮的“Enabled” 属性变为“false,班重新开始启用这些控件,其代码如下:典顶鳄笋类言曼蛛纪思愿private void Stop_Click(object sender, Even

45、tArgs e)吉释跄剑福绽 蕴 sockUDP1.CloseSock();button1.Enabled =true;button2.Enabled =false;其中sockUDP1.CloseSock(/示调用sockUDP的CloseSock停止监听。登录客户 端之前要先打开服务器端的“Listener®体,点击 开始服务”按钮。南出金商缥评缗肃群赏4.3 数据库连接本系统采用的数据库是 SQL Server 2005,首先要安装SQL Server 2005主要操作:安装SQL Server 2005组件、安装服务器、填写本地计算机、新的SQL Server实例或安装客服端

46、工具、安装服务器和客户端、填写公司与名称、接受协议、 设置用户账户、进行身份验证等。爷缆金巨判翻喘煤笺除安装后,建立一个名为Myqq的数据库,保存注册的用户信息和用户之间的关系。在Visual Studio 2010的应用程序中添加一个名为SqlHelp的类来连接数据库。连 接字符串为 private static string conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Secuhty=True");其中使用 getconn函数打开连接,具体代码 如下:锲炽崎曾萨蜷窦补飙黑

47、public void getconn() conn = new SqlConnection("Data Source=.;Initial Catalog=MYqq;Integrated Security=True");噱仓戈本道t 稠屈® 谄璋凤try conn.Open();catch (Exception ee) MessageBox.Show('数据库连接错误!"); closeconn函数关闭连接,具体代码如下:public void closeconn() conn.Close();getselect函数为查询数据库,返回查询结果,其

48、中getselect具体代码如下:public SqlDataReader getselect(string sql)if(conn=null)getconn();SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader rs = cmd.ExecuteReader(); return rs;Change函数为添加、删除或修改数据库,其中Change具体代码如下:public int change(string sql)int i=0;if(conn=null)getconn();trySqlCommand cmd=new SqlComm

49、and(sql,conn);i=cmd.ExecuteNonQuery();catch(Exception ee) MessageBox.Show(ee.Message); return i; 客户端进行注册、登录、添加好友等操作都会用到数据库,由服务器端连接数 据库获取数据再返回给客户端。4.4 主要功能模块介绍4.4.1 用户注册服务器端:调用up_PRegist向数据库表中添加新用户,返回用户状态及 id。服 务器在收到客户端的数据后,对数据进行解析并为用户注册,并将返回的结果使用原 socket通道发送给客户端。关键代码如下: 醇库踪佥设脚濒谄string returnmes =&qu

50、ot;"string regmes = new ClassSerializers().DeSerializeBinary(new System.IO.MemoryStream(msg.MsgContent) as string;解贼洋责深锯string allm=regmes.Split('/');SQLhelp help = new SQLhelp();help.getconn();try 第四章详细设计int i= help.change("insert into userinfo(word,name) values," + allm0 + &

51、quot;','" + allm2 + "')");讯通融国贺粽枢辄锁翼catch (Exception ee)MessageBox.Show(ee.Message); trySqlDataReader rs2 = help.getselect("select top 1 * from userinfo order by UserID desc");完!«闲乾鳏擦钮襟薮 if (rs2.HasRows) rs2.Read();returnmes= rs2.GetInt32(0).ToString(); rs2.

52、Dispose(); catch (Exception ee) MessageBox.Show(ee.Message); help.closeconn();ClassMsg msg3 = new ClassMsg(8, "", newClassSerializers().SerializeBinary(returnmes).ToArray()牌麻鳍适篮异铜鹳票SendMsgToOne(IPAddress.Parse(allm3), int.Parse(allm4), msg3押解蜀 到4妥婵锵户泼。注册页面如图4-2所示。用户注册包括填写用户账号,密码,名字等,如果用户填写

53、的信息有误,如:两 次输入的密码不相同,系统将提示注册有误,则需要重新填写信息。眯瞅艮癞唠阁跷蜃本窗体主要使用了 4个Label控件,分别用于显示密码、确认密码以及名字; 2 个Button控件用于确认注册与取消,3个TextBox控件用于注册时用户填写密码、 确 认密码以及名字等信息。闵n韵雕s隽剜颂im。点击 提交”按钮触发btnSubmit_Click事件,客户端验证注册信息正确以后便向服务器发送注册请求,服务器验证信息后便在用户表中插入新用户数据,便自动生成ID号,最后将ID返回到客户端,用户便可根据此ID进行登录聊天系统,其中 btnSubmit_Click事件具体代码如下:楝獴&#

54、165;开阈灯伞馍言皆粮。图4-2用户注册界面private void btnSubmit_Click(object sender, EventArgs e)侑 绊,留鹅酗嘤纵 if (word1.Text = "" | word2.Text ="")MessageBox.Show('密码不能为空!");else if (word1.Text != word2.Text)MessageBox.ShowC两次输入密码不一样!");else if (word1.Text.Length < 6 | word2.Text.Len

55、gth < 6片铀健迁馀霸修鸾觐 黑MessageBox.ShowC密码不能少于五位!"); else ClassMsg msg = new ClassMsg(3, "", newClassSerializers().SerializeBinary(word1.Text + "/" + word2.Text + "/" + regname.Text + "/" + Program.ip + "/" + Program.port.ToString().ToArray();调碎鹦震钺

56、馒提刿薮 sendMsgToServer(msg);label7.Text ="请稍等" 通过判断密码是否为空、两次密码是否一致已经密码是否少于五位来验证用户输 入信息的准确性,当通过验证后,则调用sendMsgToServer函数向服务器发送注册请求。最后清空各个输入框中字符。根据服务器返回的结果弹出对应的MessageBox对话框,回复至ij登陆窗口。属耸如f鳍晋兖堇腰。sendMsgToServer函数的实现方法如下:public void sendMsgToServer(ClassMsg msg) this.sockUDP2.Send(this.ServerIP,

57、this.ServerPort, new ClassSerializers().SerializeBinary(msg).ToArray();苧谖蕤雇黄暹闩誉东犀 4.4.2用户登录服务器获得客户端发送来的用户名和密码,然后查询数据库的相应的用户列 表,如果该用户不存在或用户名与密码不匹配服务器将验证失败的结果还回给客户 端,验证过程终止。如果验证通过,则成功登录系统,登录认证的流程如图4-3所示。编摄襦倭惮噜缗赞。Server箪啬癫浏净赶钩婿鳄凫。图4-3用户登录认证流程图服务器端:登陆时,则调用服务器端在收到来自客户端的数据后解析数据包,当识别数据模式为NewUserLogin函数处理登录逻辑。在这个函数里

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论