用户登录  |  用户注册
首 页毕业论文毕业设计下载定做交易过程截图支付宝在线支付
当前位置:完美毕业网毕业论文计算机毕业设计论文

Chat即时通讯工具的设计与开发

论文代写发表联系:点击这里给我发消息QQ212181988
一键分享拿折扣:

 摘要:以Visual C++的MFC作为基本的的开发基础,使用多线程Socket套接字作为开发的应用程序开发模型,实现了网络信息的即时通讯和客户间的消息互发,并可以对相应的信息进行添加、修改和删除等数据库操作。
关键词:即时通讯;Socket套接字;多线程

前言
目前的即时通讯工具普遍所采用通信方式有两种。这两种方式各有利弊,在实际应用中,折中方案是在讨论了它们的各自特点的基础上提出的。折中方案虽然拥有普遍使用的两种方式所具有的一些特点,但是折中方案的设计只考虑了公网IP的情况,因此在网络适用范围方面还需要进一步解决。要提高其服务质量,就得从通信模式的创新设计开始[1]。
本文研究了一种在局域网环境下,基于MFC、Socket的通信工具的设计与开发,不但可以处理局域网内传统的通信需求,也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,为局域网提供一种良好、安全、快速的通信机制。
1 系统开发环境及关键技术
1.1 开发环境
为了保证即时通讯软件信息管理系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不高,Windows XP系统、双核CPU、1G内存环境下的服务器和客户端即可。
1.2 开发工具
Visual C++:它不仅是一个C++编译器,更是一个基于Windows操作系统的可视化集成开发环境。Visual C++大概可以分成三个主要的部分:C++编译环境、微软基础类库和SDK Platform。
多线程:线程是进程中可以独立调度执行的子任务,一个进程可以有一个或多个线程,它们共享所属进程所拥有的资源,包括进程代码段、进程的共有数据(利用这些共享的数据, 线程很容易实现相互之间的通信)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。
Socket套接字:Socket是一种网络程序编程接口,包括协议、地址和端口号,是对通信双方端点的一种抽象,它提供了发送和接收远程数据的机制,也就是说程序中只需要利用Socket去发送和介绍远程的数据而不必关系是如何去发送和接收的。
1.3 关键技术
包括Socket套接字的建立和多线程的应用[2,3]。
其中建立服务器Socket应用程序的步骤如下:
(1)建立服务器端的Socket,并且以此监听来自客户端的连接请求。
(2)当服务器段监测到来自客户端的连接请求时,则接收此请求并建立客户端Socket,该Socket将作为客户端连接及后续处理发送及接收数据的依据,完成服务器与客户端的Socket通信连接。
(3)处理根据客户端的信息,一般称为请求,可视为客户端的指令需求。
(4)根据客户端传来的请求,服务器端需经过程序逻辑处理之后,发送回相对的执行结果或错误信息至客户端。
(5)当程序完成数据或命令的处理之后,便关闭Socket通信链接。在传递数据上,服务器与客户端之间可通过recv()函数及send()函数对数据的接收和发送。
(6)当连接中断时,程序利用closesocket()关闭Socket并释放系统资源。
多线程的应用:使用Win32 的CreatThread ( ) 函数来创建进程,用Win32 的TerminateThread() 函数来结束进程。
其中Win32 的CreatThread ( ) 函数调用格式如下:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpsa
DWORD cbStack,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpThreadParam,
DWORD fdwCreate,
LPDWORD lpIDThread );
TerminateThread()函数的调用格式如下:
BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);
hThread是将被终结的线程的句柄,dwExitCode则用于指定线程的退出码。一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用TerminateThread强行终止某一线程的执行。各参数含义如下:
2 模块设计
2.1 模型架构
Chat即时通讯工具是以“服务器—客户端(C/S)”为模型架构的[3,4]。客户端与服器之间采用Socket套接字通讯。客户端软件作为用户界面,使用MFC设计用户界面,服务器运行环境要求安全稳定。该系统共分三层,第一层为界面层,使用MFC设计精美易操作具有良好用户体验的用户界面;第二层为操作层,这一层需要掌握Socket通讯原理和通讯两端需要遵守特定的协议,了解网络通信中的TCP/IP协议;第三层位数据层,数据存储要求安全可靠高效。在程序的设计中,设计好日志管理和文件配置。服务器端保存所有用户信息,对客户端登录、消息发送接收等操作认证。
2.2 系统功能模块
系统功能模块由服务器和客户端两部分组成,其中服务器端的实现主要是任务是完成对数据库的操作、监听客户端和建立连接。客户端在正确登录后可以进行消息发送接收,文件的传输。
服务器端是一个简单的用户管理界面管理、统计所有用户的基本信息,显示在线用户用户名、密码、在线状态。服务器可以新增加、删除用户和修改用户信息。服务器对客户端的登录信息验证,验证信息正确用户的在线状态修改为“上线”。验证的信息有用户名和密码。
客户端用户在与服务器连接之前,服务器要确定已经启动,客户端需要知道服务器的IP地址。客户端与服务器连接后,客户端想服务器发送用户登录的用户名和密码,服务器验证登录信息是否正确,如果正确,初始化客户端用户界面,用户可以与好友进行消息通讯、文件传输。
2.3 UML建模设计
UML是统一建模语言(Unified Modeling Language)的简称,用于对面向对象软件编程的模型建立。用例是一个简单的声明,体现为用文字或图表形式描述一个软件在规划阶段产生的技术性需求和功能性需求,利用EA建模工具来实现功能介绍。
客户端的用户登录进程包括[5]:填写连接服务器的IP,填写登录用户的用户名和密码,选择记住密码或是自动登录,发送登录请求,通知好友上线,消息通信,文件传输,退出登录。
服务器的启动进程包括:初始化所有用户信息,增加用户,删除用户,修改用户信息,更新数据库信息,服务器退出。
3 功能测试
对系统的功能模块测试,服务器能够增加、删除用户和修改用户信息,不同的客户端用户能通过服务器进行消息通讯、文件传输等
3.1 服务器功能模块测试
服务器增加用户测试:服务器启动后,连接数据库,初始化数据库的信息,服务器可以进行新用户的增加操作,现在增加一个用户名为sky的新用户,见下图1。

图1 服务器增加用户
测试结果:上图中点击添加按钮,则用户名为sky的新用户就添加到了服务器界面中,并且更新数据库的信息,测试成功。
服务器修改用户信息测试:现在要把用户名为卡卡的用户信息,修改用户名为梅西,见下图2。

图2 服务器修改用户信息
测试结果:上图中双击卡卡用户,出现修改对话框,把用户昵称修改为梅西,然后点击修改按钮,测试成功。
3.2 客户功能模块测试
客户端用户消息发送与接收:客户端用户与服务器连接成功后,填写用户登录信息发给服务器,服务器验证登录信息是否正确,如果正确,初始化客户端用户主界面。主界面显示好友的状态,红色的圆图标表示好友用户已经上线。灰色圆图标表示好友用户还没有上线[6,7]。用户登录成功后,可以跟好友用户进行消息交换和文件传输,见下图3和图4。

图3 客户端消息发送

图4 客户端文件发送
测试结果:测试成功。
4 小结和展望
即时通讯工具迅速发展,功能日益丰富,它不再是一个单纯的聊天工具,更是一个集交流、娱乐、搜索、资讯、电子商务和企业客户服务于一体的综合化信息平台,正深刻地改变着人们的生活和工作方式。
从长远来看,如果可以解决网络信息安全方面的难题,即时通讯平台可以在企业级得到广泛应用,在面向工作人员的客户端上可以统一呈现单位所有人员和客户的组织信息,并能迅速与目标对象进行信息交换,加强内外部见的沟通,提升管理的即时性,提高办公效率。

参考文献
[1] 刘莉. 基于B/S模式即时通信招生平台的研究与实现[D]. 山东大学, 2012.
[2] 龙波, 柳继.局域网中P2P即时通讯工具的设计与实现[J]. 吉林大学学报:信息科学版, 2012(3).
[3] 孙晓梦, 王志斌. 基于TCP的多线程Socket通信实例[J]. 辽东学院学报(自然科学版), 2013(3).
[4] 何丽多. 基于XMPP协议即时通信系统的WEB应用和集成研究[J]. 大连海事大学, 2011.
[5] 王维红, 樊廷玖. 基于Socket套接字的医学信息传送模块的设计与实现[J]. 中国医学装备, 2014(1).
[6] 陈雅静. 基于Socket网络编程的远程物流防伪系统的设计[J]. 电子设计工程, 2013(1).
[7] 周学威, 闫鑫, 赵榉云, 杨薇. 基于SOCKET的多线程下载工具的开发[J]. 电子测试, 2011(8).

Tags:

作者:佚名
Copyright © 2007-2013 完美毕业网. All Rights Reserved .
页面执行时间:14,296.88000 毫秒
Powered by:完美毕业网 http://www.biye114.com