ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:197.98KB ,
资源ID:11593318      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11593318.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(企业QQ通信系统设计与实现毕业设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

企业QQ通信系统设计与实现毕业设计.docx

1、企业QQ通信系统设计与实现毕业设计宜宾职业技术学院毕业设计企业QQ通信系统设计与实现企业QQ通信系统设计与实现摘 要企业QQ通信系统可作为企业内部的交流工具使用,虽然通信的安全性不是很高,但是要求信息的响应速度要较快,能让企业内部员工充分享受到网络即时消息的方便和快捷,从而提高工作质量和效率。本设计采用Visual C+ 6.0程序,使用C+编程语言进行软件的开发。主要实现了用户注册、用户登录、用户之间文字聊天、文件传输、语音聊天、视频聊天功能,构成一个实用的、功能完善的聊天软件,达到预期目标;通过运行、测试与分析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:QQ系统;企业

2、通信;Visual C+ 6.0;C+;数据库企业QQ通信系统设计与实现1 引 言1.1 课题背景21世纪将是网络化、信息化的世纪,信息的融合已经成为社会发展的主流方向。简易版企业QQ聊天系统将不断与信息交流领域的系统相互集成和渗透,扩展其自己的功能和应用范围,满足未来话音,数据和视频的多媒体应用需要,使即时消息以更丰富的接入方法,更高的服务质量,更友好的面貌呈现在世人的面前。从功能角度来看,简易版企业QQ聊天系统向支持全媒体方向发展,随着多媒体技术在网络应用中的发展,简易版企业QQ聊天系统承载的媒体,不再局限于原来的文字、语音和文件的信息交换,信息载体扩展到图形、图像和流媒体等多媒体业务上。

3、目前ICQ和QQ预设了部分简单的表情图像,通过传输图像代码来传递表情图像,可以被视为即时消息开发商开发支持图形、图像为载体的即时消息软件的开端。从应用范围角度来看,简易版企业QQ聊天系统集中在Internet个人用户之间的信息交流应用,随着网络技术应用的发展,简易版企业QQ聊天系统应用范围向园区化、集团化拓展,应用领域突破个人,而用于远程教学、远程医疗、远程演示、网络会议等领域。1.2 国内外主要聊天工具的发展状况中国的大部分网络用户都拥有自己的QQ号码。腾讯计算机系统有限公司成立于1998年11月。1999年2月,腾讯自主开发了基于Internet的即时通信网络工具腾讯即时通信Tencent

4、 InstantMessenger,简称TIM或腾讯QQ。腾讯QQ经过三年时间的发展,到2002年,其用户群成为中国最大的互联网注册用户群,注册用户达到1亿6000万,其中活跃用户总数超过5000万。自此腾讯QQ成为中国最大的即时通信服务提供商。腾讯公司是中国最早也是目前中国市场上最大的本土互联网即时通信软件开发商。公司成立10多年以来,一直以追求卓越的技术为导向,始终处于稳健、高速发展的状态。腾讯QQ超过6亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊

5、天用户带来越来越多的人性化服务:从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件。ICQ和MSN是在国外比较盛行的即时聊天工具,腾讯QQ的开发对MSN和ICQ都进行了借鉴。ICQ是I Seek You(我找你)的缩写,最初是一家以色列公司开发出来的免费软件,中文名称目前可以称之为“网络呼叫器”,它在全球拥有超过4000万的用户。事实上这种软件最主要的功能就是让用户知道网络上的朋友现在有没有上线(前提是对方也有安装ICQ),然后可以互送Messages(消息)交谈或是交换档案等等,比电子邮件更具即时性。正如一位ICQ软件的最初程序设计员所说: “当你登录因特网之后,你周围

6、都是些自己熟悉的人,而且,你还可以和他们分享这种体验,这的确是一件令人激动的事情。”MSN是微软推出的聊天软件,是一套类似ICQ的网上即时通讯软件,它以最简单的方式为用户提供强有力的即时消息支持,同时能使Microsoft OutlookExpress(R)和MSN Hotmail(R)变得更简单易用。MSN Messenger Service还可使用户间的联机交谈变得更加轻松愉快,了解谁在联机以及查看用户何时联机并与其交换即时消息。用户间可以进行单独的聊天,或者在同一个对话窗口中与多达四个的联系人进行聊天。自动的输入指示器可让用户知道何时联系人正在输入答复,还可以进行全球电话呼叫以非常低的费

7、用呼叫世界的任何地方。用户可以选择所要使用的电话服务提供商,从服务提供商的列表中选择最适合的提供商。用交谈取代键盘输入,使用计算机上的话筒和扬声器就可以和位于世界各地的朋友进行交谈,甚至可以呼叫联系人将文本消息发送到联系人的移动电话和传呼机上(注:此特性仅适用于美国和加拿大),而进入 “聊天室”结识新朋友,或加入与名人聊天,此特性在所有地区都适用。用户可以使用MSN Messenger与朋友交换照片、喜爱的音乐或任何其他文件,也可以监视新的电子邮件并查看用户有多少新的电子邮件。MSN Messenger能在收到新的Hotmail邮件时通知用户,还能邀请联系人进行联机DirectPlay兼容游戏

8、。1.3 本课题研究的意义此次开发的企业QQ通信系统可作为个人的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采用Visual C+ 6.0平台开发,并使用Access 2003管理数据库数据。服务器是可以监听和查看用户的基本操作;客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。2 系统需求分析2.1 系统的功能需求分析本系统的设计目标是实现一个企业内部局域网通信系统,企业内部职工可以方便的进行交流,可以大大的提高职工的工作效率。根据企业对局域网通信的需求

9、,本系统主要包括信息通信、系统设置、搜索用户、访问公共资源、访问对方主机五大功能。各功能概述:信息通信:信息通信是企业内部通信系统的核心功能,它用于不同职工之间的通信,这种通信方式能够实现多个职工之间的通信,而不存在类似电话占线的问题,增加了任务分配的新方式,从而提高企业的工作效率。系统设置:系统设置用于设置用户界面、公共路径、公告栏等的功能。用户搜索:用户搜索用于搜索企业局域网内的其他用户,系统会根据用户所设置的IP搜索范围搜索所有计算机上的用户。访问公共资源:本功能用于实现企业内部公共服务器上资源访问的功能。访问对方主机:本功能用于两人聊天情况下对对方主机的访问和控制的功能。 第一次使用系

10、统的用户通过填写个人信息来注册,服务器返回一个注册ID号给注册用户,用来登录。已经注册的用户在登录界面填写完相关登录信息,通过服务器的验证后就可以进入客户端界面。在线用户在添加好友时可以查看所要添加用户的列表信息。当对要添加的好友发送请求添加的信息后,由该好友验证是否通过请求,同意后会向请求方发送同意添加的消息。当请求方添加完成后,服务器端会把相关信息存入到好友表的数据库中。完成以上操作以后,两人即可进行在线聊天。 2.2 系统的可行性分析2.2.1 可行性要求、目标企业内部通信系统必须提供网络通信功能,在通信过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上机资料的丢

11、失以及其他损失。最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务器中转和记录通信内容,可以独立完成通信任务,排除职工对领导监视工作进度等行为的逆反心理。企业内部通信系统的目标是实现企业的信息化通信,提高企业通信能力,提高任务理解和执行能力,减少没有必要的人员流动和资金损耗,以最快的速度提升企业的市场竞争力。2.2.2 技术可行性分析局域网通信系统的技术已经非常成熟,首先,从硬件上讲,计算机硬件速度现在已经不是问题,高速便捷的网络已经十分普遍,这些为本系统的运行打下坚实的基础。从软件的角度上讲,数

12、据库技术已经相当成熟(目前用得比较多的有SQL Server, Visual C+ 6.0等),并且处理能力也非常强,这为海量数据的存储和处理打下了坚实的基础,同时,使用Visual C+ 6.0开发程序也相当普遍。有了这些技术的支持,我们成功开发一个局域网通信系统没有任何技术风险。2.2.3 经济可行性分析经济可行性主要是对项目的经济效益进行评价。本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。本系统开发经费对于企业在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以该企业内

13、部通信系统在经济上是可行的。3 系统设计3.1 系统拓扑结构图企业QQ通信系统分为客户端和服务器端,并且多个客户端可以连接同一个服务器端,通信系统的拓扑结构如图3.1所示。图3.1 企业QQ通信系统拓扑结构图3.2 系统功能结构图企业QQ通信系统分为客户端和服务器端两个项目。其中服务器端不但提供接收客户端的链接,还能够对账户进行管理。服务器端的主要模块如图3.2所示。客户端只要实现相互之间的消息和文件传递,客户端的主要模块如图3.3所示。图3.2 服务器端图3.3 客户端3.3 网络通信原理分析企业QQ通信系统使用TCP和UDP两种连接方式进行连接。客户端使用TCP连接服务器,服务器端是使用U

14、DP进行通信,系统连接模式如图3.4所示。图3.4 连接模式服务器端和客户端使用Socket建立通信连接的过程如下:(1)服务器端建立m_SvrSock和m_OrgSock两个套接字句柄。m_OrgSock和OnOrgMsg函数建立异步通信,端口1201,接收客户端发送的连接请求(FD_ACCEPT)。在OnOrgMsg函数内将org.xml文件发送到客户端。m_SvrSock和OnNetEvent函数建立异步通信,端口1200,接收客户端发送的连接请求,接收到客户端的心跳测试和登录请求(登录后将端口1201的信息发送过去,并判断是否已经登录),定时向客户端发送心跳包,每隔10s发送一次,如果

15、5次没有心跳回复,则认为掉线。(2)客户端建立m_ClientSock和m_UdpSock两个套接句柄,m_ClientSock连接方式为TCP,m_UdpSock连接方式为UDP,端口都是随机获取的。m_ClientSock和OnNetEvent函数建立异步通信。m_UdpSock和OnOrgMsg函数建立异步通信。客户端首先使用m_ClientSock建立连接,连接服务器的IP地址和端口。首先发送PT_LOGINREQUEST和本机UDP端口(m_nUdpPort)到服务器,如果用户名和密码正确,则得到PT_LOGINACCEPT和1201端口,此时服务器会向每个客户端发送刚登录客户端的I

16、P地址和UDP端口(PT_USERINFO)。客户端接收到PT_LOGINACCEPT后,创建m_OrgSock套接字,本地端口随机,连接到服务器端的1201端口,准备获取org.xml文件。客户端发送消息首先会创建taskSock套接字(客户端为A),因为用户在双击要发送消息的用户时(OnDblclkOrgtree),会获得它的UDP端口和IP地址,然后发送PT_REQUESTUDPPORT到客户端B,B新生成的UDP连接端口号后,返回PT_RETURNUDPPORT消息给A。每次创建taskSock套接字都会启动一个接收数据的线程(SendTaskProc),此时客户端A和B都启动了接收数

17、据的线程。A接收到PT_RETURNUDPPORT后,返回PT_STREAM及相应的数据。发送文件和发送消息流程相同,创建taskSock套接字后启动的是SendFile进程,A接收到PT_RETURNUDPPORT后,返回PT_FILE。3.4 开发环境企业QQ通信系统的开发环境如下:系统开发平台:Visual C+ 6.0。系统开发语言:C+。数据库管理系统软件:Access 2003。运行平台:Windows XP(SP2)/Windows 2000(SP4)/Windows Server 2003(SP1)。分辨率:最佳效果1024768像素。3.5 数据库设计服务器端使用Access

18、 2003作为后台数据库,用来储存组织结构及账户信息,数据库命名为SvrInfo,其中包含2张数据表。tb_Account表:tb_Account表储存的是账户信息。账户信息如表3.1所示。表3.1 账户信息表字段名数据类型长度描述字段名数据类型长度描述AccountID数字4账户HeaderShip文本20职务Username文本12姓名OfficePhone文本22办公电话Password文本18密码Handset文本22手机Sex文本2性别E-mail文本32电子邮件Age数字4年龄Address文本50联系地址OrgID数字4部门Picture文本20图片,以账户命名OrgName文本

19、50部门名称tb_OrgInfo表:tb_OrgInfo表用于储存组织信息。组织信息如表3.2所示。表3.2 组织信息表字段名数据类型长度描述OrgID数字4组织编号OrgName文本20组织姓名ParentID数字4上一级编号4 服务器端设计4.1 服务器端主窗体模块4.1.1 服务器端主窗体概述服务器端可以对组织结构及账户进行管理,并且提供通信服务,负责将组织结构信息和账户信息发送给各个客户端、提供通信服务,负责将组织结构信息和账户信息发送给各个客户端、验证账户的登录权限、检查客户端是否保持在线。客户端主窗体模块主要负责通信服务,并且可以调用组织信息管理模块和账户信息管理模块。服务器端主界

20、面效果如图4.1所示。图4.1 服务器端主界面4.1.2 窗口设计创建一个对话框,向对话框中添加两个按钮控件。设置控件属性如表4.1所示。表4.1控件属性控件类型资源值对应类成员名称属性设置ButtonIDC_ORGMANAGEOnOrgmanage组织信息管理默认ButtonIDC_ACCOUNTMANAGEOnAccountManage账户信息管理默认4.1.3 关键代码分析在对话框初始化函数中,对数据库进行初始化,创建套接字并绑定本机IP地址和一个端口,然后开始监听,并将网络设置为异步通信。为什么要使用异步通信?异步通信有什么好处?可以通过OnInitDialog()函数的应用来了解。部

21、分代码如下:BOOL CQQServerDlg:OnInitDialog() CDialog:OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX m_Sock = accept(m_SvrSock, (sockaddr*)&Addr, &nAddrSize); if (client-m_Sock = I

22、NVALID_SOCKET) /接受连接失败 catch(.)/修改密码失败 CPackage Package; Package.m_Type =PT_PT_UPDATEPASSFAILD; send(wParam, (char*)&Package, sizeof(CPackage), 0); delete pBuffer; break; return S_OK;服务器端创建两个端口,并使用TCP进行数据传输,TCP是传输控制协议,是一种提供可靠数据传输的通信协议。它在网际协议模块和TCP模块之间的传输,该协议允许两个应用程序建立一个连接,并在全双工方向上发送数据,然后终止连接,每一个TCP连

23、接可靠地建立并完善地终止,在终止发生前,所有数据都会被可靠地传输。TCP通过3次握手建立可靠的连接,所谓3次握手指通信双方彼此交换3次信息。3次握手是在存在数据报丢失、重复和延迟的情况下,确保通信双方信息交换确定性的充分必要条件。使用TCP协议建立通信的步骤如图4.2所示。图4.2 TCP通信连接过程在应用程序是指定时器用来做什么,从OnTimer的实现代码中可以看出。判断用户是否在线需要使用定时器,每隔一段时间就向客户端发送一个消息,如果客户端能够回复消息,说明客户端在线,否则认为客户端已经掉线。将服务器端发送给客户端的这条信息称为心跳包,消息类型PT_TEST就代表该包是心跳包。服务器端保

24、存有在线客户的列表,如果客户端掉线了,就在列表中将客户端删除。void CQQServerDlg:OnTimer(UINT nIDEvent) switch (nIDEvent) case 1: /向客户端发送心跳包 POSITION pos = m_ClientSockList.GetHeadPosition(); m_ClientSockList.GetNext(pos); break; CDialog:OnTimer(nIDEvent);验证用户名和密码,通过SQL语句检查数据库中是否有相应的用户名和密码。BOOL CQQServerDlg:VerifyUser(int nID, cha

25、r *szPassword) CString szSQL; szSQL.Format(select AccountID from tb_Account where AccountID = %d and Password = %s,nID, szPassword); _RecordsetPtr pRecord = m_DataManage.m_pConnect-Execute(_bstr_t)szSQL, 0, adCmdText); if (!pRecord-ADOEOF) /判断用户是否存在 return TRUE; return FALSE;OnOrgMsg函数同OnNetEvent函数一

26、样,都是消息的处理函数,同样可以处理FD_ACCEPT事件。在OnOrgMsg函数中当有客户端发送请求时,服务器端会将org.xml文件发送到客户端,org.xml文件中存放的是组织结构信息,也就是含有在线用户列表,每个客户端都会在登录时获得该列表。如果组织结构和用户比较多时,文件会比较大,所以如果文件超出一定范围后,就将文件分成多份进行发送。LRESULT CQQServerDlg:OnOrgMsg(WPARAM wParam, LPARAM lParam) WORD nEvent = WSAGETSELECTEVENT(lParam); /获取网络事件 WORD nError = WSAG

27、ETSELECTERROR(lParam); /获取错误代码 DWORD dwRead = file.ReadHuge(pTmp, dwMsg-sizeof(CPackage); int nlen = send(sock, pData, dwMsg, 0); closesocket(sock);/ delete pBuffer; break; return S_OK;UserIsLogined()函数主要用来判断客户端是否已经在线了,和FindClient函数类似,同样需要遍历整个列表,同样如果列表中有相同的IP和ID,说明客户端存在,否则客户端不存在。BOOL CQQServerDlg:UserIsLogined(int nID, SOCKET sock) /获取套接字IP sockaddr_in A

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1