基于net的在线聊天系统本科学位论文.docx
《基于net的在线聊天系统本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于net的在线聊天系统本科学位论文.docx(35页珍藏版)》请在冰豆网上搜索。
![基于net的在线聊天系统本科学位论文.docx](https://file1.bdocx.com/fileroot1/2023-1/23/a47c2ea4-feee-4b19-9ca5-96371cd71f2e/a47c2ea4-feee-4b19-9ca5-96371cd71f2e1.gif)
基于net的在线聊天系统本科学位论文
潍坊科技学院
本科毕业设计(论文)
题目基于.NET的在线聊天系统
院(系)中印计算机软件学院专业计算机科学与技术
学号200801450006
学生姓名纪连文
指导教师祝凌云
起讫日期2011.12.15-2012.4.30
设计地点潍坊科技学院
摘要
随着网络技术的不断发展,网络聊天技术正成为目前产业界和科研机构密切关注的焦点。
基于网络的聊天技术已成了近年来新兴的聊天交流方式。
网络聊天是在20世纪90年代发展起来的,它是在原有的面对面等通过动态声音为信息载体的基础上,增加了非接触式的通过静态文字为载体的交流方式。
其使用的C/S结构系统可以在任何一台的计算机上使用,系统的部署和维护只是在服务器上进行,这样的模式既能减少管理的成本,更重要的是它能很方便的实现用户与系统的交互,更快地响应用户信息交互请求,加之微软C#编程语言在窗体应用上的优势以及平台的独立性好、简便的窗体生成为C/S的实现提供了很好的技术基础。
本系统前台选用了C#等作为主要的编程工具和语言,后台选用SQLServer2008作为数据库服务器。
利用ADO.NET编程技术实现前后台的数据交互。
本系统实现了以下功能:
即时聊天,添加好友,文件上传,聊天记录查询等。
关键词:
C#C/S结构数据库主程序
Abstract
Withthedevelopmentofnetworktechnologynetworkchattechnologyisbecometheindustryandscientificresearchinstitutionscloseattention.Basedonnetworkchattechnologyinrecentyearshasbecometheemergingchatcommunication.Networkchatisinthe1990s,itwasdevelopedintheoriginalfacetofaceforsuchinformationcarrierbydynamicvoice,onthebasisofincreasednon-contactthroughthestatictextasthecarriertypeofcommunication.Itsrestrictiveislower,avoidthegleamofrestrainingfactorsincommunication;Chatsystemisprovidingtheseserviceswithdynamicinteractionfunctionofthemanagementinformationsystem,itachievedanetworkofon-linechat;Userscanchattingininformationsystemandthebefondofaccordingtooneselfandcharacterinhisownwaytocommunicateandfindfriends.Suchuserneverleavehome,cancommunicatewithpeopleanywhereatanytime,fromthetraditionalwayofcommunicationintimeandspace,andthelimitationsoftraditionalexchangeindividualfactors,enrichedthelimitationsofthenetworklifepeople.
AstheInternet'srapidrise,C/Sstructureofsystemcanbeinanyonecomputeruse,thesystem'sdeploymentandmaintenancejustonfileserver,suchamodelcannotonlyreducethecostmanagement,moreimportantisitcaneasilyachieveuserandsysteminteraction,torespondmorequicklytouserinformationinteractionrequest,togetherwithMicrosoftC#programminglanguages,asisknowntoall,putforwardtheapplicationformontheC#theindependenceoftheadvantagesandplatform,simpleformwasborntherealizationofbecomingC/S,providegoodtechnologyfoundation.
Thus,usingtheInternettocoverageareawideadvantage,buildabasedonC/Sstructureofnetworkchatsystem,andprovidethenetworkservicemainlytochattosatisfytheusers,accordingtohisownwillandcommunicationneedsandconvenientdegreeofpursuit,richuser'snetworklifeanddailycommunicationmeans,willgetsmoreandmoreusersfavor.
Keywords:
C#C/SstructureDateBaseMainProcess
目录
摘要I
目录II
第1章绪论1
1.1选题背景及意义1
1.2网络聊天简介1
1.3系统设计思想1
1.4可行性分析2
1.5系统运行环境2
第2章相关技术概述3
2.1客户端/服务器(Client/Server)结构概述3
2.2SOCKET编程技术3
2.6SQLServer2008概述4
2.7ADO.NET技术4
第3章需求分析5
3.1系统需求分析5
3.2系统功能需求5
3.3数据处理需求6
3.4系统性能需求6
第4章系统分析与设计7
4.1系统功能模块设计7
4.2系统模块详细设计7
4.2.1客户端功能模块设计7
4.2.2服务器端功能模块设计10
4.3系统整体流程图10
第5章数据库设计13
5.1概述13
5.2数据库概念结构设计13
5.3数据库逻辑结构设计14
5.3.1用户信息实体属性图14
5.3.2用户好友关系信息实体属性图14
5.4数据表设计15
5.5创建数据的存储过程15
第6章系统详细设计与实现17
6.1系统通用类设计17
6.1.1数据库表结构类设计17
6.1.2服务器端模块数据库表操作类设计18
6.1.3对数据库操作的封装18
6.2界面及功能设计18
6.2.1服务器主界面19
6.2.2客户端界面19
6.3系统实现过程中遇到的问题与解决27
6.3.1Socket套接字异常问题27
6.3.2多线程问题27
第7章结论与展望28
7.1结论28
7.2不足之处及未来展望28
参考文献29
致谢30
第1章绪论
1.1选题背景及意义
Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。
作为Internet上一种先进的,易于被人们所接受的信息检索手段,WorldWideWeb(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。
如今,人们不仅可以在网上查询自己需要的资源,而且可以通过网络进行实时的沟通。
从实时性和有效性上都超过了用信件和电子邮件,并且在费用上要低于电话。
因而各种聊天服务备受用户青睐,在这方面的开发与应用也较多,聊天服务也成为互联网提供的重要服务之一,因此,建立一个好的在线交流聊天系统十分重要。
互联网的大多数网站都建有聊天室,并且有专业聊天网站提供聊天服务。
它们中大部分都是绝对的C/S模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异。
1.2网络聊天简介
网络聊天,英文简称NC(Networkchat),指的是按照用户的要求播放视频。
NC有很广泛的含义,包含了娱乐、教育、商业等领域的多种应用,如游戏聊天(ChatInGame)、在线语音聊天(Onlinevoicechat)、离线文件传输(Offlinefiletransfer)和远程教学(LongDistanceLearning)等。
网络聊天是在20世纪90年代发展起来的,它是在原有的面对面等通过动态声音为信息载体的基础上,增加了非接触式的通过静态文字为载体的交流方式,其限制性比较低,避免了沟通上的一线制约因素;聊天系统就是提供了这些服务的具有动态交互功能的管理信息系统,它实现了一个网络上的在线聊天;用户可以在聊天信息系统并根据自己的喜好和性格进行自己的交流方式和寻找朋友。
这样,使用户足不出户就可随时随地地与人交流,摆脱了传统交流方式在时间和空间的局限性,以及传统交流个人自身的因素的局限性,极大丰富了人们的网络生活。
1.3系统设计思想
聊天系统利用.Net平台的Winform技术和数据库技术,提供以文字聊天为中心的网络文本传输服务,系统采用C#作为编程语言技术,结合C/S结构模式,能动态实现与用户的交互,满足用户添加好友和修改用户信息等需求,以及后台管理员对系统信息管理的需求。
1.4可行性分析
计算机网络作为一种先进的信息传输媒体,有着信息传送速度快、信息覆盖面广、成本低的特点。
随着信息技术的发展,利用C#技术结合数据库技术来实现一个聊天系统,提供以文字聊天为中心的网络文本传输服务,能更贴切的满足用户根据自己的意愿进行无打扰的聊天的需求,也必将受到用户的青睐。
但是,开发任何一个基于计算机的系统,都会受到时间和资源上的限制。
因此,在开发系统前必须进行可行性分析,以减少项目的开发风险,避免人力、物力和财力的浪费。
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题能否解决。
对在聊天系统的可行性分析如下:
1、经济可行性分析:
成本较低,系统建设不需要很大的投入,系统更新时也只需更新服务器端程序,方便维护。
2、技术可行性分析:
系统采用.NET开发平台,.NETFramework是.NET平台的基本框架,具有强大的API,给系统奠定了技术基础。
系统采用C#.NET技术,结合C/S结构模式,能够方便实现用户与系统的动态交互,以及方便信息的维护等。
3、运行上可行性:
本系统作为一个小型的聊天系统,所耗费的资源非常的小。
综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。
1.5系统运行环境
系统开发环境:
MicrosoftVisualStudio2008
系统开发语言:
C#
运行平台:
Windows7
数据库:
SQLServer2008
第2章相关技术概述
2.1客户端/服务器(Client/Server)结构概述
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
而且代价高,效率低。
如图2.1和图2.2所示:
图2.1C/S结构图
图2.2客户机/服务器通信结构示图
2.2SOCKET编程技术
Microsoft.NetFramework为应用程序访问Internet提供了分层的、可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序。
其实,Socket可以象流Stream一样被视为一个数据通道,这个通道架设在应用程序端(客户端)和远程服务器端之间,而后,数据的读取(接收)和写入(发送)均针对这个通道来进行。
2.6SQLServer2008概述
SQLServer是一个关系数据库管理系统。
SQLServer2008的特性有:
1.Internet集成;
2.可伸缩性和可用性;
3.企业级数据库功能;
4.易于安装、部署和使用;
2.7ADO.NET技术
ADO.NET是在.NETFramework平台中负责数据存储的对象。
ADO.NET建立在如XML的业界的基础之上,就像ADO,它提供了一个数据访问接口,以便和OLEDB兼容的数据源进行通信,如SQLServer或Oracle.应用程序可以使用ADO.NET连接这些数据源,并检索,处理和更新数据。
使用ADO.NET最重要的理由是可以获取一个真正断开连接的数据体系结构和XML的紧密集成和一个通用的数据表示法,可以将各种不同数据源中的数据组合起来,并优化了和数据库交互的功能。
第3章需求分析
3.1系统需求分析
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。
对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的系统只会令用户失望,给开发者带来烦恼。
网络聊天的出现,最初是源于人们对远程通信、远程帮助的需求发展到现在的远程群聊、远程教育、远程控制以及语音聊天和视屏聊天。
在传统的聊天中,要求人们面多面的聊天近距离的的沟通。
虽然可以通过电话进行远程没接触式的聊天,但是这种聊天费用高昂,对于对身体的健康也有一定的影响而且电话聊天对于偏远地区效果并不好,在当今如此快节奏的生活中,在高速发展的信息经济中,用户没能在恰当的时间通过交流接受到自己有用的信息是常有发生的事情。
这对于用户的日常生活会产生极大影响,用户希望可以根据自己的时间和安排进行方便的信息交换,不必遵守传统的聊天时间机制,可以随时随地的联系、表述自己的想法与朋友进行感情的交流。
并且随着网络技术的不断发展,人们越来越习惯于利用网络来实现所需的服务,网络信息经济时代的来临,因此,建立一个基于网络的聊天系统,以其不受时间与空间的限制,向用户提供以文本信息传输为中心的服务,动态地实现与用户间的信息交互,必能满足广大用户的需求,该系统主要分为两部分:
客户端和服务器端两部分。
系统所要实现的功能主要是方便用户进行网络聊天。
3.2系统功能需求
初步将在聊天系统分为两个模块:
客户端模块及服务器模块。
1、客户端功能包括:
用户登录:
建立与服务器的连接并登陆,能显示登陆错误信息,以及配置登陆的服务器IP地址和端口号。
用户注册:
连接本地数据库,注册用户号码,并保存该用户,同时将信息返回给客户端。
聊天功能:
与好友进行聊天。
信息显示:
显示好友的在线列表和好友的离线列表。
聊天纪录:
能够记录当前界面的聊天记录。
登录提示:
显示欢迎界面。
信息提示:
能够播放提示音,提示用户有人向其发送聊天邀请。
头像闪烁提示:
在收到消息而聊天面板未打开时,对你发出聊天信息的好友头像闪烁。
发送窗口抖动:
发送提示声音并对好友的聊天窗体进行颤动激活。
添加好友:
能够通过连接本地数据库进行添加好友。
删除好友:
能够通过连接本地数据库进行删除好友。
2、服务器端功能包括:
登陆信息:
检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。
就将在线用户好友列表和离线好友列表发给该用户,并将该用户的状态发给各在线用户并更新其在线好友列表和离线好友列表。
消息发送:
服务器打开监听,当接收到客户端发送的消息建立线程通过Sockets套接字转发消息。
操作数据库:
服务器端对数据库里的数据表进行映射生成在线好友列表和离线列表。
用户下线:
将此用户下线消息发给各客户端,并改写用户在服务器端的状态,更新客户端的在线好友列表和离线列表。
3.3数据处理需求
对用户信息的处理需求:
包括查询好友信息、添加好友关系信息、删除好友关系信息。
对聊天信息的处理需求:
包括发送字符串、接收并显示字符串、保存当前界面的信息。
3.4系统性能需求
一个系统的性能包括信息系统的效率、处理方式、可靠性、安全性、适应性等内容。
效率是信息系统的处理能力、处理速度、吞吐量、响应时间等与系统处理时间有关的性能要素。
处理方式涉及的范围比较宽,包括信息系统的结构和分布模式、交互方式、业务处理方式等。
可靠性是保证系统正常工作及抗故障、抗干扰的能力,它包括:
保证系统正常工作的能力;对系统故障的预防、检测以及自动纠错的能力;出现故障时,保证系统不发生崩溃,并使系统重新恢复、重新启动的能力等。
安全性是保证合法用户能够正确使用信息系统,并防止非法用户访问信息系统的能力。
适应性是信息系统对外部环境和需求变化的适应能力。
根据系统的性能需求,在聊天系统的开发主要要实现的目标有以下几个方面:
(1)界面设计友好、美观。
(2)数据存储安全、可靠。
(3)信息分类清晰、准确。
(4)数据查询的灵活性。
(5)实现对聊天信息的展示。
(6)提供好友关系信息的添加、删除功能,方便用户操作。
(7)具有易维护性和易操作性。
第4章系统分析与设计
4.1系统功能模块设计
按系统的功能需求分析,将系统功能模块分为两大模块:
客户端功能模块和服务器端功能模块。
客户端功能模块包括:
用户登录模块、用户注册模块、软件版权模块、显示好友模块、在线聊天模块、添加好友模块、删除好友模块;
服务器功能模块包括:
服务器登录模块。
根据系统功能模块设计,系统的整体功能结构图如图4.1所示:
图4.1系统整体功能结构图
4.2系统模块详细设计
4.2.1客户端功能模块设计
(1)用户注册。
设计流程如下:
输入要注册的用户名和密码,系统会检查用户名是否已经存在,如果不存在,就允许注册新用户并发回数据库自动生成的用户ID。
模块流程图如图4.2所示:
图4.2用户注册流程图
(2)用户登录。
设计流程如下:
首先判断服务器的端口号是否配置正确,然后判断输入的用户名和密码是否正确,正确就用户登录。
模块流程图如图4.3所示:
图4.3用户登录流程图
(3)滚动和通知区域图标。
设计流程如下:
在登录成功后,生成窗体的NotifyIcon图标和一个滚动的欢迎图标。
(4)显示好友。
设计流程如下:
在登录成功后,服务器将为用户对数据库的表进行映射获得在线好友的列表和离线好友的列表通过Socket套接字发送过去,显示好友模块在显示面板上显示好友。
(5)在线聊天。
设计流程如下:
先判断好友是否在线,进入聊天界面中写入发送的信息,通过服务器监听到发送好友消息在转发给好友,进行在线聊天,其还整合发送震动框提示功能、头像闪烁提示以及声音提示功能。
模块流程图如图4.4所示:
图4.4在线聊天模块流程图
(6)添加好友。
设计流程如下:
首先通过进行查询操作判断用户是否已经加过其好友,然后进行添加好友关系。
模块流程图如图4.5所示:
图4.5添加好友模块流程图
(7)删除好友。
设计流程如下:
首先通过进行查询操作判断用户是否是在操作自己的好友关系,然后判断是否是好友关系,如果是就删除好友关系。
模块流程图如图4.6所示:
图4.6删除好友模块流程图
4.2.2服务器端功能模块设计
服务器端功能模块就是服务器监听模块:
服务器监听模块。
设计流程如下:
首先判断服务器的端口是否更该,配置好端口号开启服务器开始监听,监听到用户登录消息,客户端进行操作数据库验证,正确就建立Socket连接,并读取其在线好友列表和离线好友列表发送给客户端,当监听客户端进行各种操作,服务器端调用自身的监听处理方法进行处理并将结果或信息通过Socket发送给客户端。
服务器监听模块流程图如图4.7所示:
图4.7服务器监听模块流程图
4.3系统整体流程图
在聊天系统的流程是用户在客户端登录,若用户名不存在,则需先注册用户信息,在注册完用户信息后,用户输入自己的帐号及密码登录系统,在用户登录成功后服务器端监听客户端发来的登陆消息,进行登录处理,验证数据库表中的数据进行对比以及该用户当前的状态,如果用户的账号和密码比对无错,再比对在线用户Hash表中是否已经登录,如果没有登录则建立Socket连接并更新在线用户Hash表,建立线程处理与用户的Socket连接操作,同时发送登录用户的在线好友列表和离线好友列表,用户成功登录后,进入好友显示模块,在在线好友界面中点击好友头像进入聊天界面,用户发送信息给在线好友,服务器监听到客户端通过Socket发过来的对好友进行聊天的消息,并截取Socket传输的数据流中的发送者要传输给接收者的消息,通过与接收者建立Socket连接,将数据写入其Socket传输数据中,实现数据的转发,同时用户对好友进行发颤抖框操作都是服务器接受其操作消息标识参数,在发给好友操作标识参数,然后其客户端就会调用其自身定义的该标识参数下的方法,聊天完毕,用户发送离线消息,服务器接受到其消息,关闭与其的Socket连接,更新在线用户Hash表以及在线用户的在线好友列表。
客户机/服务器模式在操作过程中采取的是主动请示方式,首先服务器方要先启动,并根据请示提供相应服务:
(过程如下)
1、服务器
(1)、打开一通信端口并告知本地主机,它愿意在某一个公认地址上接收客户请求。
(2)、等待客户请求到达该端口。
(3)、接收到重复服务请求,处理该请求并发送应答信号。
(4)、返回第二步,等待另一客户请求。
(5)、关闭服务器。
2、客户方:
(1)、打开一通信通道,并连接到服务器所在主机的特定端口。
(2)、向服务器发送服务请求报文,等待并接收应答;继续提出请求……
(3)、请求结束后关闭通信通道