1、摘 要即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。本文分析了即时通讯系统的原理及其实现过程,探讨了Socket技术与多线程技术在C/S模式下的局域网即时通讯系统的应用。本毕业设计就是模拟 QQ 聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。系统主要采用C/S架构、C#编程语言、.NET开发平台、UDP通信协议以及Socket等技术来完成。
2、主要实现的功能有注册、登录、聊天、发送表情以及文件传输等功能。系统采用客户机/服务器(C/S)的模式设计,是一个三层C/S结构,数据库服务器、应用程序服务器端、应用程序客户端,按照此设计思想,可以将任务合理分配到客户机端和服务器端 ,从而降低了系统的通信开销。此系统共分为两个模块:客户端模块和服务器端模块。通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:即时通讯;Socket; UDP; C#AbstractInstant messaging software is currently one of the most common computer users
3、 to communicate the way, a variety of chat software also emerge in an endless stream; the service provider offers more and more communication services. Instant communication is the most basic function is the text data by computer are realized in the form of the exchange of ideas and communication, i
4、t has the advantage of convenience, as a new, cheap, fast, convenient way to communicate to create among the people. This paper analyzes the principle of instant communication system and its realizing process, discusses the application of Socket network technology and multithreading technology in C/
5、S mode of instant messaging system. This graduation design is to simulate the QQ chat software, the development of a text chat, file transfer and other functions of the chat software. The system mainly uses C/S architecture, C# programming language,.NET development platform, UDP protocol and Socket
6、technology to complete. The main function of registration, login, chat, send expression and file transfer functions. The system uses a client / server (C/S) mode design, is a three layer C/S structure, database server, application server, client application program, according to the design idea, the
7、 system uses the C/S structure, the rational allocation of tasks to the client side and server, which reduces the communication overhead system. This system consists of two modules: the client and server end module. Through testing and analysis, operation, this multi-function chat software is stable
8、, reliable, and has a certain practical value.Key words: Instant Messager; Socket; UDP; C#目 录摘 要IAbstractII第一章 绪 论11.1 即时通信系统的概念11.2 国内外即时通讯的研究现状11.3 本课题的意义与主要工作内容21.4 论文的组织结构2第二章 需求分析和可行性分析32.1 需求分析32.1.1 系统包含的功能32.1.2 功能模块32.2 系统可行性分析52.2.1 经济可行性分析52.2.2 人力可行性分析52.2.3 技术可行性分析52.3 开发环境和相关技术介绍52.3.1
9、 开发环境52.3.2 Microsoft Visual Studio 2010介绍62.3.3 .NET平台62.3.4 C# 语言简介62.3.5 Socket 技术62.3.6 TCP/IP 协议62.3.7 Client/Server 结构(客户端/服务器模式)72.4 本章小结7第三章 数据库设计83.1 SQL Server数据库介绍83.2 理论基础83.3 数据库E-R图93.4 数据库设计93.4.1 数据库逻辑设计93.4.2 数据库物理设计103.5数据库关系图103.6 本章小结10第四章 详细设计114.1 多线程设计114.2 服务器的设计124.3 数据库连接14
10、4.4 主要功能模块介绍154.4.1 用户注册154.4.2 用户登录184.4.3 用户聊天224.4.4 添加好友234.4.5 删除好友254.5 本章小结26第五章 重难点分析及解决方案275.1 服务器监听设计275.1.1 服务器端监听分析275.1.2 核心代码展示275.2 用户注册285.3 用户登录295.4发送表情与发送文件305.5 获取好友列表335.6 本章小结34第六章 系统测试与发布356.1 系统测试356.1.1 测试目的356.1.2 系统测试常用方法356.1.3 测试结果356.2 系统发布376.3 本章小结37第七章 系统的不足与展望387.1
11、系统的不足387.2 系统的展望387.3 本章小结38结 论39参考文献40致 谢41III第一章 绪论第一章 绪 论1.1 即时通信系统的概念即时通讯(Instant Messenger,简称IM),是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连网即时通讯网络的服务。即时通讯不同于e-mail在于它的交谈是即时的。大部分的即时
12、通讯服务提供了状态信息的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。 近年来,随着无线通信的快速发展,移动互联网为传统的Internet注入了新的活力,同时也为即时通讯带来了一场革命,交互双方已经不再局限于以网络终端设备为唯一的接入手段,PC机在传统的网络即时通讯中所起的作用正在被手机、平板电脑所取代。这使得即时通讯更加大众化和人性化,即使不会使用电脑的人现在也可以享受到即时通讯给人们带来的变化。纵观即时通讯软件业的迅速发展,设计并开发一个即时通讯平台,对于现阶段的学习和研究,都是极为有意义的,基于这个前提和起因,我选择了设计即时通讯系统作为我的毕业设计。1.2 国内外即时通讯的研
13、究现状从商业研究的方面看,即时通讯软件从最初的免费政策,到逐渐挖掘和整合创新多种盈利模式,即时通讯市场收入逐步扩大,而为企业用户提供商务即时通讯的一整套解决办法将成为未来即时通讯企业角逐的热点和盈利的新空间1。即时通讯运营商的盈利模式包括互联网增值服务、无线网增值服务、广告服务和企业即时通讯服务。以前,即时通讯运营商的盈利方式还仅局限于互联网即时通讯增值业务,但是随着市场的发展和功能的开发,无线网络增值业务和广告业务更多的参与到运营商整体收入中来2。从学术化的即时通讯研究方面看,国内外公开发表的论文非常少3。仅有的几篇集中在即时通讯基本服务元素的定义方面4与即时通讯软件技术实现、编程技巧等方面
14、5。还有部分关于安全性的讨论6。总的说来,国内外关于即时通讯的研究还不够系统和深入。1.3 本课题的意义与主要工作内容聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出实现的相关理论与知识。本课题主要研究内容包括以下几个方面:(1) 查找相关书籍与文献,了解C/S构架并搭建.NET开发平台(2) 查找相关资料,学习C#开发语言以及SQL Server数据库的使用,(3) 查找现阶段基于局域网的即时通讯软件的发展现状以及相关功能(4)
15、 Socket编程技术在上述基础上,做出即时通讯软件的相关功能如下:(1) 用户注册功能(2) 用户登录功能(3) 添加好友功能(4) 添加分组功能(5) 删除好友功能(6) 删除分组功能(7) 移动好友到指定分组功能(8) 即时聊天功能(9) 文件传输功能1.4 论文的组织结构第一章:绪论。第二章:需求分析和可行性分析,分析了系统的需求和系统实施的可行性。第三章:数据库设计,介绍了本系统所使用的数据库、数据库的设计、数据库E-R图以及数据库关系图。第四章:详细设计,本章主要进行了系统的模块设计,包括多线程设计、服务器设计、 数据库连接以及阐述系统各功能模块。第五章:重难点分析及解决方案,本章
16、着重分析了本系统的重难点及其解决方案。第六章:系统测试与发布,本章主要介绍了系统测试的环节、展示了测试的结果以及系统的发布。第七章:系统的不足与展望,主要陈述了本系统存在哪些不足的地方以及对系统的展望。 43第二章 需求分析和可行性分析第二章 需求分析和可行性分析2.1 需求分析此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采用.NET平台开发,采用UDP通信协议,使用Socket技术。服务器是可以进行监听,记录客户端请求和验证客户端身份的合法
17、性,客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。2.1.1 系统包含的功能本聊天系统需包含如下基本功能:(1) 客户端的主要功能:l 用户注册l 用户登录l 添加好友l 获取好友列表l 与好友聊天l 发送表情功能l 文件传输(2) 服务器端的主要功能:l 启动服务l 建立连接l 监听客户请求2.1.2 功能模块聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。根据聊天的通信步骤,系统的功能模块如图2-1所示。(1) 服务器端服务器端完成3大功能:建立连接、断开连接、监听客户请求。这3大功能的具体含义如下:l 建立连接:系
18、统启动时建立连接,绑定本地计算机的一个端口,不断地监听是否有客户端请求连接或者断开连接。l 断开连接:停止监听,系统断开连接。l 监听客户请求:服务器端是个信息枢纽,所有向服务器端请求的客户端的信息都要传到服务器端,再由服务器根据客户端的请求按要求分发出去,客户端再向服务器端发送各种请求,如:登录,发送消息,获取好友列表等。即时通讯系统客户端服务器用户注册用户登录添加好友获取好友列表与好友聊天发送表情功能文件传输启动服务停止服务监听客户请求图2-1 系统功能模块图 (2) 客户端客户端完成以下几大功能:用户注册、用户登录、添加好友、聊天功能、发送表情、文件传输功能。l 用户注册:客户端与服务器
19、建立通信通道,服务就收客户端的注册请求。通过系统的注册界面,输入账号和密码,完成注册。l 用户登录:客户端与服务器建立通信通道,随时接收来自服务器的监听。通过系统的登录界面,输入账号和密码,然后发送到服务器进行验证。如果验证通过,服务器则返回用户的好友信息。l 添加好友:用户在登录系统之后可以添加好友。l 聊天功能:客户在与好友建立通信连接后,便可以与好友进行聊天,聊天时发送的是文本信息。l 发送表情功能:与好友聊天时,可在文本信息中插入表情。l 文件传输:用户之间可以相互传送文件以实现文件共享。2.2 系统可行性分析可行性分析(Feasibility Analysis)也称为可行性研究,是在
20、系统调查的基础上,针对新系统的发开是否具备必要性和可能性,对新系统的开发从各方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2.1 经济可行性分析基于局域网、C/S架构的即时通讯系统在很多资料上都能找到,包括书本和网络上都有很多类似的系统,开发这样一个系统所需要的花费不是很大,需要的开发工具、需要的软件等都可以在网上找到试用版,不需要购买,所以不需要花费太多金钱,在经济上完全能够完成本系统的设计。2.2.2 人力可行性分析完成本系统不需要太多的人力资源,有老师和同学的帮助,也可以在网上找到与本系统相关的很多资
21、源,在人力资源上能够完成本系统的设计。2.2.3 技术可行性分析基于.NET的即时通讯软件,实现一般通讯软件的基本功能(登录,聊天,退出),没有十分复杂的其他功能,如:登录、添加好友、与好友聊天、传输文件等基本的功能,这些都能够运用所学的知识实现。本系统使用的编程语言是C#语言,所使用的平台是.NET平台,对于VS2010的使用还是比较熟悉。在校已学习过C#编程。完成这个通讯软件的基础知识大都已经具备,同时,在网上也可以找到许多资料,如CSDN、看雪论坛等能够查到许多开源源代码,自己能够充分运用这些网络资源,完成这个毕业设计。2.3 开发环境和相关技术介绍2.3.1 开发环境本设计是一个局域网
22、即时通讯软件,要在短时间内开发出来并且满足客户要求,无论是硬件还是软件都要选择合适,要求如下:开发设备完善;开发机器的性能必须稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多的平台上运行;要求运行机配置尽可能低档。对此,我选择的硬件环境和软件环境如下:l 硬件环境(1) 处理器:Intel Pentium PIII或者更高的处理器(2) 内存:256MB或更高(3) 网络:局域网l 软件环境(1) 操作系统:Windows XP/Windows 7(2) 开发平台:Microsoft Visual Studio 2010(3) 开发语言:C#(4) 数据库:SQL Server 200
23、52.3.2 Microsoft Visual Studio 2010介绍Visual Studio是微软公司推出的开发环境。Visual Studio 2010同时带来.NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且支持开发面向Windows的应用程序。2.3.3 .NET平台.NET就是微软的用来实现XML,Web Services,SOA(面向服务的体系结构service-oriented architecture)和敏捷性的技术。.NET是微软的新一代技术平
24、台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。.NET是基于Windows操作系统运行的操作平台,应用于互联网的分布式。2.3.4 C# 语言简介C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。它是微软公司.NET windows网络框架的主角。2.3.5 Socket 技术所谓Socket通常也称作“套接字”,应用程
25、序通常通过“套接字”向网络发出请求或者应答网络请求。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器
26、端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。2.3.6 TCP/IP 协议TCP/IP是国际互联网所采用进行网际互连的通信协议7 ,实际所称的TCP/IP协议包括了在国际互联网络应用的一组协议,互联网协议族是此协议族的另一个名字8。(1) TCP协议在因特网协议族(Internet protocol suite)四层协议中,TCP层是位于IP层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。TCP 服务提供了可靠性、有
27、效流控制、数据流传输、多路复用技术和全双工操作等。(2) UDP协议UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊
28、天用的ICQ和QQ就是使用的UDP协议。2.3.7 Client/Server 结构(客户端/服务器模式)Client/Server或客户/服务器模式:Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。2.4 本章小结本章主要对本系统的相关技术进行介绍,对基于C/S即时通讯的原理有一定的了解,对数据信息在网络中传输的原理都有进一步的认识,从需求分析和可行性分析出发讲述系统的系统设
29、计架构、需求分析、技术可行性分析以及对系统的开发环境和相关技术进行了详细的介绍。为设计本系统构建了一定的理论体系。第三章 数据库设计第三章 数据库设计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 的Windo
30、ws NT 版本。Sybase 则较专注于SQL Server在UN操作系统上的应用。SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。3.2 理论基础设计关系数据库时,遵循不
31、同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小9。(1) 第一范式(1NF)就是无重复的域。在任何一个关系数据库中,第一范式是对关系模式的设计基本要求,一般设计中都必须满足第一范式。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。(2) 第二范式(2NF)要求实体的属性完全依赖于主关键字。(3) 第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主键子信息。数据库设计是进行系统开发的基础性工作,设计方案的好坏是影响开发的重要因
32、素。数据库设计要遵循以下原则10:(1) 数据的完整性:保证数据库中的数据准确。(2) 数据的结构化:数据库设计必须层次分明,分布合理。数据库必须高度结构化,保证数据的结构化、规范化和标准化。(3) 减少数据冗余:数据库系统应该尽量减少数据冗余,节省存储空间,提高数据质量。消除数据库表中非主属性对主关键词的非完全依赖性和非主属性对主关键词的传递依赖性,将二维表转化为第三范式,是降低数据冗余的有效方式。3.3 数据库E-R图用户和好友关系之间是多对多的关系,一个用户可以对应多个好友关系、一种好友关系只能对应一个用户。数据库E-R图如图3-1所示。图3-1 数据库E-R图3.4 数据库设计3.4.
33、1 数据库逻辑设计即时通讯系统总共使用到了两张数据表,用户信息表与用户关系表。用户信息表用来记录所有已注册的用户的登录账户、密码、姓名等信息,userid即用户账号为主键,word用于保存密码,name保存用户名字,用户信息表的详细结构如表3-1所示。表3-1 用户表列名数据类型是否主键可否为空useridvarchar(50)是否wordvarchar(50)否否namevarchar(50)否否好友关系表用来记录用户的好友关系,其中userid为主键,friendid用来记录好友的ID,friendid不可以为空,好友关系表的详细结构如表3-2所示。表3-2 好友关系表列名数据类型是否主键
34、可否为空useridvarchar(50)是否friendidvarchar(50)否否3.4.2 数据库物理设计(1) 表名:用户信息表此表用来记录所有已注册的用户的登录账户、密码、性别等信息,userid即用户账号为主键。(2) 表名:用户关系表此表用来记录用户的好友关系信息,userid为主键。3.5 数据库关系图用户信息表的主键tmid 作为好友关系表rtmid和rfriend的外键,输入好友的账号,添加成功后,好友的账号将会显示在好友列表中。3.6 本章小结本章主要介绍了SQL Server数据库和数据库的设计。数据库设计又包括数据表设计和存储过程的设计。数据库表主要存储用户信息和好
35、友关系信息,即时通讯系统连接数据库后便可以读取数据库中的信息。第四章 详细设计第四章 详细设计4.1 多线程设计服务器需要和多个客户端同时进行通信,这就是服务器端的多线程。一旦服务器发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进行通信。用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据排队而发生的延迟或者丢失,可以很好利用系统的性能11。点击服务器端窗体的“开始服务”按钮,调用Listen开始监听,监听处理过程位于单独的线程中,Listen的实现方法如下:public void Listen(int Port) try UDP_Server_Port = Port;
36、UDP_Server = new UdpClient(Port); thdUdp = new Thread(new ThreadStart(GetUDPData); thdUdp.Start(); catch (Exception e) if (Sock_Error!= null)Sock_Error(e.ToString(); 点击服务器端窗体的“停止服务”按钮,调用CloseSock停止监听,CloseSock的实现方法如下:public void CloseSock() Thread.Sleep(30); tryUDP_Server.Close(); thdUdp.Abort();cat
37、ch(Exception e)if (Sock_Error!= null)Sock_Error(e.ToString(); 当服务器端接收到客户端的请求后,调用GetUDPData函数来分析并获取客户端的请求,并进行处理,GetUDPData的实现方法如下:public void GetUDPData() while (true) try byte RData = UDP_Server.Receive(ref _Server); if (DataArrival != null) DataArrival(RData, _Server.Address, _Server.Port); Thread.
38、Sleep(0); catch (Exception e) if (Sock_Error != null) Sock_Error(e.ToString(); 4.2 服务器的设计服务器实现了服务器的多线程,服务器端有一个进程(或多个进程)在指定的端口等待客户的连接信息。一时连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务端发出连接请求。服务器端主窗口如图4-1所示。图4-1 服务器主窗口本窗体主要使用到了一个listview控件,分别用于显示已连接用户的ID、IP地址、名字NAME、端口号Port,2个Button控件。点击“开始服务”按钮触发Listen _
39、Click事件,执行此操作后,“结束服务”按钮的“Enabled”属性变为“true”,“开始服务”按钮的“Enabled”属性变为“false”,既不再启用这些控件,具体代码如下:private void Listen_Click(object sender, EventArgs e) . sockUDP1 Listen(1433); button1.Enabled = false; button2.Enabled = true; 其中sockUDP1 Listen(1433)表示调用sockUDP的tListen开始监听。点击“Stop”按钮触发Stop _Click事件,执行此操作后,“
40、Stop”按钮的“Enabled”属性变为“false”,既重新开始启用这些控件,其代码如下:private void Stop_Click(object sender, EventArgs e) sockUDP1.CloseSock(); button1.Enabled = true; button2.Enabled = false; 其中sockUDP1.CloseSock()表示调用sockUDP的CloseSock停止监听。登录客户端之前要先打开服务器端的“Listener”窗体,点击“开始服务”按钮。4.3 数据库连接本系统采用的数据库是SQL Server 2005, 首先要安装S
41、QL Server 2005。主要操作:安装SQL Server 2005组件、安装服务器、填写本地计算机、新的SQL Server 实例或安装客服端工具、安装服务器和客户端、填写公司与名称、接受协议、设置用户账户、进行身份验证等。安装后,建立一个名为Myqq的数据库,保存注册的用户信息和用户之间的关系。在Visual Studio 2010的应用程序中添加一个名为SqlHelp的类来连接数据库。连接字符串为private static string conn = new SqlConnection(Data Source=.;Initial Catalog=MYqq;Integrated S
42、ecurity=True);其中使用getconn函数打开连接,具体代码如下: public void getconn() conn = new SqlConnection(Data Source=.;Initial Catalog=MYqq;Integrated Security=True); try conn.Open(); catch (Exception ee) MessageBox.Show(数据库连接错误!); closeconn函数关闭连接,具体代码如下:public void closeconn() conn.Close(); getselect函数为查询数据库,返回查询结果,
43、其中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(); try SqlCommand cmd=new SqlCommand(sql,conn); i=cmd.ExecuteNonQuery(); catch(Exception ee) MessageBox.Show(ee.Message); return i; 客户端进行注册、登录、添加好友等操作都会用到数据库,由服务器端连接数据库获取数据再返回给客户端。4.4 主要功能模块介绍4.4.1 用户注册服务器端:调用up_PRegist向数据库表中添加新用户,返回用户状态及id。服务器在收到客户端的数据后,对数据进行解析并为用户注册,并将返回的结果使用原socket通道发送给客户端。关键代码