题 目 基于局域网的即时通讯聊天室
部 系 地方生部专 业 电子信息工程
I
基于局域网的即时通讯聊天系统的设计
摘 要
随着计算机科学和Internet的飞速发展, 网上聊天已成为人们相互交流的一种方式, 与E-mai l、 电话相比,聊天服务更具有实时性和有效性。
本论文提出一个运行于VC平台上的局域网聊天软件的解决方案。该聊天软件包括服务器端和客户端两个模块客户端通过服务器端进行通信。服务器端模块主要实现了服务器的配置和数据的传递客户端模块主要实现了用户注册、登录、文字聊天等功能。该软件采用异步套接字的非阻塞模式并实现对象的序列化和MFC文件对象实现数据的保存。
该软件能够帮助企业在局域网内搭建起自己的聊天系统避免企业内部员工使用类似QQ等软件泄露内部信息但是该软件只实现了聊天的基本功能还有很多不足之处需要改进。
关键字局域网、即时通信、套接字、异步模式
II
An instant messaging chat system based of LAN
Abstract
Along 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 chat-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 VC platform. This chatting software includes two modules: the server and the client,which can communicate with each other. The server module mainly completes the sever device’s configuration. The client module mainly completes the users’ login,registration, instant messaging and so on. The software used model of non-blocking asynchronous socket ,And to achieve the object and MFC series documents the preservation of the object data.
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 function as a chatting system, so it need much more improvement.
Key words LAN、 Instant mes saging、 Socket、 asynchronous modle
目录
III
摘 要-------------------------------------------------------------------------------------------------------II
A bstract -----------------------------------------------------------------------------------------------------III
1概述--------------------------------------------------------------------------------------------------------3
1. 1系统现状-----------------------------------------------------------------------------------------------1
1.2系统内容与目标--------------------------------------------------------------------------------------2
1 .3系统综述-----------------------------------------------------------------------------------------------2
2 系统开发环境和关键技术--------------------------------------------------------------------------3
2. 1开发环境-----------------------------------------------------------------------------------------------3
2.2关键技术-----------------------------------------------------------------------------------------------3
2. 2. 1 .Visual C++和面向对象程序设计------------------------------------------------------------------------------3
2. 2.2 M F C ----------------------------------------------------------------------------------------------------------------------4
2. 2.3 WINDOWS SOCKETS网络编程接口---------------------------------------------------------------------------------4
2. 2.4 WSAAsyncSelect模型开发-----------------------------------------------------------------------------------------5
2. 2.5 TCP/IP协议、 TCP协议---------------------------------------------------------------------------------------------6
2. 2.6 Cl ient/Server结构客户机/服务器模式--------------------------------------------------------------8
3 系统分析与设计---------------------------------------------------------------------------------------9
3. 1系统分析-----------------------------------------------------------------------------------------------9
3. 1. 1系统需求-----------------------------------------------------------------------------------------------------------------9
3. 1.2需求分析----------------------------------------------------------------------------------------------------------------10
3.2系统设计---------------------------------------------------------------------------------------------11
3. 2. 1设计原则----------------------------------------------------------------------------------------------------------------11
3. 2.3工作流程----------------------------------------------------------------------------------------------------------------12
3. 2.4功能设计----------------------------------------------------------------------------------------------------------------12
3.2.5共享数据类设计--------------------------------------------------------------------------------------------------------13
4 系统实现-----------------------------------------------------------------------------------------------16
4. 1服务器端设计实现---------------------------------------------------------------------------------16
4. 1. 1服务器端静态类图---------------------------------------------------------------------------------------------------16
4. 1.2服务器主要类介绍---------------------------------------------------------------------------------------------------16
4. 1.3服务器端主要过程介绍--------------------------------------------------------------------------------------------19
4.2客户端设计实现------------------------------------------------------------------------------------25
4. 2. 1客户端静态类图------------------------------------------------------------------------------------------------------25
4. 2.2客户端主要类介绍---------------------------------------------------------------------------------------------------25
4. 2. 3客户端主要过程介绍------------------------------------------------------------------------------------------------27
4.3系统测试---------------------------------------------------------------------------------------------32
4.3. 1测试意义------------------------------------------------------------------------------------------32
4 3 2软件测试的目标-------------------------------------------------------------------------------------------------------32
4 3 2软件测试的方法-------------------------------------------------------------------------------------------------------32
4 3 3测试用例----------------------------------------------------------------------------------------------------------------33
总结与展望-------------------------------------------------------------------------------------------------34
参考文献----------------------------------------------------------------------------------------------------36
致谢--------------------------------------------------------------------------------------------------------37
1概述
近年来随着全球信息化进程的不断发展网络也在飞速发展。出于高效、快速地处理各种事务的目的越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下企业得以简化信息流程提高信息交换的速度从而提高工作效率。然而随着企业规模的扩大业务量的增加企业内部的信息越来越私密企业只希望员工通过内部局域网进行沟通与交流避免企业内部机密通过Internet泄露到外部。为了解决上述矛盾人们提出了开发局域网聊天软件的构想通过局域网聊天软件企业员工可以随时的进行即时消息传递召开网络会议等有利于提高工作消息效率 同时又保护了企业内部信息的安全性。
本系统采用基于Socket的局域网通信工具的设计与实现的方法。基于Socket 的局域网通信软件可以为企业原有的局域网提供一种良好安全快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动具有实现成本低廉的优点它的使用能有效地降低局域网通信负荷提高局域网的使用效率可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具很好地诠释了Socket通信的原理并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快保密性好 占用网络带宽资源低 占用服务器吞吐能力低易于编程实现等优点。
基于Socket的局域网通信软件应用范围广阔不但可以处理传统的通信需求而且也能扩展以适应新型的网络应用如网络教育数据影音传输等拥有广泛的应用前景。
1. 1系统现状
基于局域网的即时通信工具实际上是互联网即时通信工具的一个小规模版本广域网上的即时通信工具如今一般采用UDP或者TCP协议体系来实现开发技术已经比较成熟 比如较早的ICQ MSN Messenger, Yahoo。除了这些国外开发的产品还有国产的有名的QQ新浪UC,LAVA-LAVA等这些工具统统都实现了广域网上的即时通信尽管都是即时通信实现了即时聊天以及文件传输的主要功能但是也各有各的特色 比如ICQ的巨大客户群 MSN的个性化表情 YAHOO通的易操作性等。而QQ也具有一个相当方便的屏幕截图功能另外就是所有上述软件都实现了网络即时的视频语音聊天功能。这些软件在使用方面各有特色在实现方面也各有所长但基于这些产品正在商业运营阶段其实现方式属于商业机密具体细节不一定得知但是它在大的方面无非就是各种利用各种平台上的网络通信接口建构基于下层TCP/IP,或者UDP协议的软件产品。
1
1.2系统内容与目标
本课题主要研究的是局域网聊天软件此聊天软件分为服务器程序和客户端程序本课题的目标是能实现用户在客户端与服务器端传递文字信息。
主要研究开发内容是熟悉C++和VC的操作搭配系统开发平台探索在此开发平台下利用socket编程技术、多线程开发技术、 TCP、 UDP协议等进行局域网聊天软件的实际开发。
1 .3系统综述
现在多渠道的信息源、网络化的数据分布、快捷医用的交互操作、智能化的分析决策等特点越来越成为衡量有两聊天软件的关键因此本人开发一个局域网聊天软件该聊天软件是基于C++语言运行于VC平台上利用的技术主要是Socket通信使用配置文件作为数据管理。为实现和方便客户端间通信在客户端进行了人性化的界面设计,用户可以注册号码登陆界面具有发送离线消息功能。
第1章对本次课题的背景及意义、课题现状、课题内容与目标进行了深入的阐述。
第2章介绍了系统的开发环境和关键技术例如Socket编程技术非阻塞开发模式等等。
第3章是系统分析与设计。将对系统进行需求分析对组成系统的功能模块进行划分对每个模块将要实现的功能进行阐述和说明。对系统的结构进行设计设计共享数据结构。
第4章是系统实现分别介绍了服务器端和客户端每个功能的执行过程画出主要模块的流程图。
第5章介绍系统测试。
最后,对本设计进行归纳总结全面阐述本次设计中的体会。
2
2系统开发环境和关键技术
2. 1开发环境
我所设计的是一个面向中小型机构内部通信需求的局域网即时信息软件要在短时间内开发出来并且要满足客户要求无论是硬件还是软件都要选择合适,要求如下开发设备应该完备开发机器的性能必须稳定操作系统的选择应该适当开发出的程序可以在尽可能多的平台上运行要求运行机配置尽可能低档。对此我们选择的硬件环境和软件环境如下
1、 硬件环境
·处理器 Intel Pentium PIII或更高处理器
·内存 256MB或更高
·网络局域网
开发该系统应尽可能采用高档的硬件。因此在应用时应采用更好的配置。
2、 软件环境
·操作系统Windows 2000/Windows XP/Windows 2003
·开发平台Microsoft Visual C++6.0
·开发语言 C++
2.2关键技术
2.2. 1 .Visual C++和面向对象程序设计
VC基于C C++语言主要由是MFC组成是与系统联系非常紧密的编程工具它兼有高级和低级语言的双重性功能强大灵活执行效率高几乎可说VC在Windows平台无所不能。从20世纪70年代第一次提出面向对象的概念开始到现在面向对象技术发展成为一种比较成熟的编程思想通过面向对象技术可以将现实世界直接影射到对象空间从而为系统的设计和开发带来革命性的影响。 Visual C++是一个典型的面向对象程序的设计语言它也是目前为止功能最强、最受欢迎、应用最广泛、高效的Windows应用程序开发工具它是在C语言基础之上发展起来的是C语言的超集。
Visual C++是功能最为强大可视化开发工具它不仅支持传统的软件开发方法更重要的是它能支持面向对象、可视化的开发风格。因此Visual C++又称作是一个集成开发工具 它提供了软件代码自动生成和可视化的资源编辑功能。 Visual C++具有的优点提供了面向对象的应用程序框架MFC Microsoft Foundation Class ,
3
简化了程序员的编程工作提高了模块的可重用性提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、 ClassWizard、 Visual Studio、 WizardBar 等实现了直观、可视的程序设计风格方便地编和管理各种类维护程序的源代码封装了Windows的API函数、 USER、 KERNEL、 GDI函数简化了编程时创建、维护窗口的许多复杂的工作。
2.2.2 M F C
MFC,微软基础类(Microsoft Foundation Classes) ,实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台) ,MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal 和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言) ,MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的. .
2.2.3 WINDOWS SOCKETS网络编程接口
选定WINDOWS平台开发网络通信程序可以选择WINDOWS的SOCKETS编程接口Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关你可以使用Winsock来调用多种协议的功能但较常使用的是TCP/IP协议。 Windows sockets无疑是我们进行网络编程的利器。所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通讯。 Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图2. 1所示
4
Spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,数据中心位于美国德克萨斯州达拉斯和加利福尼亚圣何塞机房。TheServerStore.com,自 1994 年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有 40,000 平方英尺的仓库,库存中始终有...
卢森堡商家gcorelabs是个全球数据中心集大成的运营者,不但提供超过32个数据中心的VPS、13个数据中心的cloud(云服务器)、超过44个数据中心的独立服务器,还提供超过100个数据中心节点的CDN业务。CDN的总带宽容量超过50Tbps,支持免费测试! Gcorelabs根据业务分,有2套后台,分别是: CDN、流媒体平台、DDoS高防业务、块存储、cloud云服务器、裸金属服务器...
3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...