即时通信软件设计.docx

上传人:b****7 文档编号:11216896 上传时间:2023-02-25 格式:DOCX 页数:22 大小:187.86KB
下载 相关 举报
即时通信软件设计.docx_第1页
第1页 / 共22页
即时通信软件设计.docx_第2页
第2页 / 共22页
即时通信软件设计.docx_第3页
第3页 / 共22页
即时通信软件设计.docx_第4页
第4页 / 共22页
即时通信软件设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

即时通信软件设计.docx

《即时通信软件设计.docx》由会员分享,可在线阅读,更多相关《即时通信软件设计.docx(22页珍藏版)》请在冰豆网上搜索。

即时通信软件设计.docx

即时通信软件设计

摘要

随着计算机技术和网络通信技术的飞速发展,即时通信已成为网络信息交流中不可或缺的工具。

本文从即时通信的发展到目前的现状进行了详细的阐述,然后针对开发一套即时通信工具所需要掌握的一些技术及开发过程进行了深入的探讨。

本文的核心部分详细介绍了系统模块的划分以及各模块的实现过程,结构清晰、层次分明并且使用TCP/IP协议作为传输层的协议,更加便捷了用户之间的通讯和交友。

最后对系统进行了测试,给出了测试的目的、方法以及所使用的测试用例。

本文基于VisualStudioC#平台开发出了一套即时通信软件,系统采用了C/S和P2P通信模型混合结构设计系统构架,依靠多线程技术实现服务器的并发处理,利用Linq接口访问SQLServer数据库设计数据管理模块,实现了即时通信软件的基本功能,即文本传输、文件传送、好友管理、客户登陆、新用户注册、数据库管理等。

关键词:

即时通信,多线程,接口

 

 

目录

第一章课题研究的目的及意义1

1.1课题背景1

1.2课题研究的意义1

第二章即时通信系统理论与相关技术3

2.1即时通信的一般原理和架构3

2.2C#.Net中的套接字编程4

2.3信息传输的安全问题6

第三章即时通信软件总体设计8

3.1即时通信软件功能模块8

3.2系统整体结构8

3.3客户端软件层次结构10

第四章即时通信软件的实现11

4.1开发环境11

4.2客户登录及主界面模块11

4.3注册功能的设计与实现11

4.4登录功能设计与实现12

4.5文字通信模块14

第五章即时通信软件的功能展示17

5.1登录模块17

5.2注册界面19

5.3查找/添加好友20

5.4即时聊天及传输信息21

第六章总结与展望22

6.1总结22

6.2展望22

参考文献23

 

第一章课题研究的目的及意义

1.1课题背景

随着电脑和互联网的普及,尤其是移动互联网的发展,标志着以“联网、易用、时尚”为特征的后PC时代的到来,传统的3C被赋予了新的含义,人们利用电脑和互联网的时间越来越多,以“社区(Community)”、“内容(Content)”、“商务(Commerce)”为主要特征的网络即时通信IM(InstantMessenger),最大程度的体现了网络给人们生活带来的变化,使得人们的沟通更加方便、快捷,使人们真正有了天涯若比邻的“地球村”的感觉。

网络即时通信是一种在后PC时代兴起的,以Internet网络及其它有线、无线网络为基础的,在交互双方之间实时地传送语音、文字、图像等信息的通信方式。

随着网络技术的发展,即时通信[1]已经成为互联网中十分普及的一项应用。

近年来,点对点(P2P)技术推动了即时通信的发展。

调查显示,即时通信很有可能超越电子邮件而成为互联网用户最主要的联络工具。

1.2课题研究的意义

即时通信作为网络主要应用之一,在用户人数不断膨胀的同时,即时通信工具的功能也在不断丰富,几乎融合了当前互联网的主要应用。

即时通信的网络模型多采用客户端/服务器(C/S)模式[2],用户的暴增,功能的激增,必然导致即时通信系统在使用过程中产生大量用户信息及用户交流信息,这对传统C/S模式的服务器提出了非常高的要求:

大存储量、强稳定性、高可靠性等。

此外,用户个人信息及交换信息的安全也是即时通信系统面临的一大问题。

即使通信在给人们提供快捷的通信服务的同时,也带来了许多安全威胁。

近年来,针对IM的攻击越来越频繁。

不断增加的安全威胁引起了IM用户、IM服务提供商的关注,因此,开发一种安全的即时通信软件具有重要的意义。

 

第二章即时通信系统理论与相关技术

2.1即时通信的一般原理和架构

1)即时通信概念与应用

即时通信(IM)[1]是指能够即时发送和接收互联网消息等的业务。

1998年即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

即时通信不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。

随着移动互联网的发展,互联网即时通信也在向移动化扩张。

目前,微软、AOL、Yahoo等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。

2)IM技术原理

即时通信系统总体构架如图2-1所示。

系统一般由客户端软件和服务器软件两部分组成。

客户端为用户提供使用各种功能服务的界面,服务器为客户端提供登陆、即时信息交流和管理等服务。

双方在首次进行即时通信前必须先在计算机中安装即时通信客户端软件,然后登陆到提供即时通信服务的服务器,经注册后获得由服务器统一分配的唯一标识符后方可开始通信。

通信时,由客户端发起连接请求,服务器担任中转者的角色,将网络包从发送方转交给接受方,这采用了C/S模式;由于客户之间使用音频、视频及传输文件等服务,通信数据量较大,此时由服务器转发会出现响应不及时、服务器负载过重等问题,因此,当提供这些服务时,通常由服务器进行协商,在两个客户端建立P2P连接[3],进行直接传送。

第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(OnlinePresence)。

第二步,根据用户A存储在IM服务器上的好友列表(BuddyList),服务器将用户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。

第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。

后台数据库

服务器

P2PPPP

P2P

用户

用户

用户

 

图2-1系统总体构架图

2.2C#.Net中的套接字编程

Socket(套接字)[4]是进行程序间通信(IPC)的BSD方法。

这意味Socket用来让一个进程和其它的进程互通信息,就像我们用电话和其他人交流一样。

Socket接口是TCP/IP网络的API,程序员们可以利用Socket接口中定义的函数开发出TCP/IP网络上的应用程序。

最初Socket接口是通过UNIX操作系统实现的。

网络Socket数据输入和输出其实就是一种特殊的I/O,同时它也是一种文件描述符。

Socket中有一个非常重要的Socket()函数,程序中调用这个函数可以类似于打开文件,执行Socket()函数后,该函数会返回一个整形的Socket描述符,之后不管是连接的建立还是数据的输出等操作都可以依赖于Socket实现。

Socket是一种通信程序应用接口(API),它的实现主要依赖于操作系统和编程语言,主要有:

UNIX:

BerkeleySocket(C语言)

SystemVTransportLayerInterface(TLI)(C语言)

Windows:

Winsock

UNIX操作系统下的BerkeleySocket[5]支持四种通信协议:

UNIXDomain(AF_UNIX)、Internet(IF_INEF)、Xerox(AF_NS)和IMP链接层协议(AF_IMPLINK)。

提供了三种Socket类型:

数据流(SOCK_STREAM,对应于TCP)、数据报(SOCK_DGRAM,对应于UDP)和原始(SOCK_RAW,对应于IP)。

而WindowsSocket仅支持AF_INET即TCP/IP协议,提供数据流、数据报和原始三种套接字。

流式套接口定义了一种可靠的、面向连接的服务,实现了无差错、无重复的顺序数据传输。

数据报套接口定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,但是却对可靠性和无差错传输不提出保证。

对低层协议如IP协议的直接访问原始套接口是允许的。

这样的功能主要应用与新的网络协议实现测试等。

流式套接口的工作原理如图2-2所示。

工作过程如下:

服务器首先启动,通过调用Socket()建立一个套接口,指定所要求的通信协议类型,然后调用Bind()将该套接口和本地网络联系在一起,再调用Listen()使套接口做好侦听的准备,并规定它的请求队列的长度,之后再调用Accept()接收来自客户端的连接请求。

客户在建立套接口后就可调用Connect()和服务器建立连接。

连接一旦建立,客户机和服务器之间就可以通过调用Recv(read())和Send(write())来发送和接收数据。

最后,待数据传送结束后,双方调用Close()关闭套接口。

Server

Socket()

Client

Bind()

Socket()

建立连接

Listen()

Connect()

Accept()

Send()

Recv()

阻塞,直到客户端的连接到达Data(request)

处理接收到的数据

Data(reply)

Recv()

Send()

…………...

Close()

Close()

图2-2流式套接口的工作原理

2.3信息传输的安全问题

1)AES加密算法[6]

对称加密算法是应用较早的加密算法,技术成熟。

在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。

收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

其特点是算法公开、计算量小、加密速度快、加密效率高;缺点是交易双方都使用同样钥匙,安全性得不到保证。

2)RSA加密算法[6]

RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。

RSA就是他们三人姓氏开头字母拼在一起组成的。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。

加密算法E和解密算法D也都是公开的。

虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。

为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

这就使加密的计算量很大。

为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。

对方收到信息后,用不同的密钥解密并可核对信息摘要。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

第三章即时通信软件总体设计

3.1即时通信软件功能模块

目前即时通信技术发展很快,即时通信系统已由传统的文本信息传输工具发展成为集文本消息传输、文件传输、语音视频通信、网络会议、电子邮件等多种功能干一体的综合信息处理系统[7]。

但一般的即时通信系统只具有一些基本功能,网络会议比较适用于企业级即时通信系统。

即时信息收发模块。

它是即时通信系统的基本功能,用于在联系人间完成文本信息的收发。

用户可以实时查看其它用户的在线状态,若在线则与之进行实时交流。

文件传输模块。

它通过在联系人间建立传输链路来收发文件,几十兆的文件瞬间即可到达接收方。

语音视频交流模块。

它完成联系人间语音和视频文件的传送,使交流者虽身处异地也如同面对面交流一样。

网络会议模块。

它为多个用户提供视频会议功能,会议由主持人发起,并通过即时信息收发模块向与会人员发出会议邀请。

与会者使用屏幕共享展示会议中所需的资料,使用电子白板[8]表达自己的观点,优秀的音频视频效果使网络会议与真正的会议无异。

电子邮件模块集成了邮件到达提醒,离线消息转邮件功能,用户可使用此模块直接进行电子邮件的收发。

3.2系统整体结构

该软件系统整体流程如图3-1所示。

用户

 

已注册?

N

 

Y

注册

输入登陆数据

 

登陆验证

输入检查

N

 

合法?

YN

登陆成功

Y

主界面

注册成功

 

显示号码

聊天界面/个人设置界面/查找添加好友界面

 

图3-1系统整体流程图

3.3客户端软件层次结构

如图3-2所示,客户端主界面框架是软件的总框架,管理其它所有模块。

登录和状态管理模块,文字通信模块和好友管理模块均是软件界面的组成部分。

网络通信模块提供网络接口,包括UDP通信和TCP通信,同时提供网络包的封装和解包的函数调用接口。

本地数据管理提供对本地数据结构和本地文件的访问,维护和管理的函数接口,同时提供对注册表维护管理的函数接口。

客户端主界面模块

 

登录模块

状态更新控制模块

文字通讯模块

好友管理模块

 

协议解析模块

本地数据管理模块

底层网络通信模块

图3-2客户端软件层次结构

第四章即时通信软件的实现

4.1开发环境

操作系统:

Windows7

开发工具:

MicrosoftVisualStudio2010

编程语言:

C#

4.2客户登录及主界面模块

客户登录及主界面模块负责处理用户的登陆操作,该模块主要为了实现两个功能:

(1)在系统启动后处理用户的登录请求。

(2)在登录成功后,主界面的行程。

客户登录及主界面模块中基本的操作及主操作界面的形成是由登录窗口From_UserLogin及主窗口From_TransClock完成的。

该模块需要调用网络通信模块的接口,因为登录及主界面模块都涉及到与服务器的网络通信;同时,该模块与LoginUser.XML也应该有交互,因为用户登录后需要更新LoginUser.XML的记录信息。

4.3注册功能的设计与实现

如图4-1所示,当一个新用户要使用该软件时,则需要进行注册,注册时需填写个人相关信息,填写完毕后,如果确认无误,则发出注册请求,此时,服务器会对用户所填写的信息进行检查,同时进行请求监控,如果信息检查无误,注册成功,服务器便会反馈给该用户一个自动生成的ID,下次该用户只要输入正确的ID和登录密码,就可成功登录并使用软件。

新用户注册成功后,系统会把该用户的信息写入UserInfo表中。

服务器

客户端

填写注册信息

监听端口

注册请求

检查注册信息

合格

不合格

计算用户ID

创建拒绝注册消息

注册请求[拒绝]

结束

注册请求[成功]

结束

图4-1注册流程图

4.4登录功能设计与实现

在登录窗口From_UserLogin中可以完成登录功能前期工作,该对话框与本地LoginUser.XML进行交互。

在登陆功能的设计中,LoginUser.XML文件存储了用户的自身资料和相关好友的资料,只要用户在本机上登陆过一次该软件系统,则会自动在LoginUser.XML文件中包含其信息。

如果用户再次在本机上登录,该系统先不会去服务器验证其信息和下载资料,而是先到LoginUser.XML文件中找其信息,,如果找得到,则立即从本机上下载个人信息和好友信息;如果找不到,才会去服务器下载个人信息和好友信息。

这样设计的目的主要是为了提高加载速度。

初始化界面Form_UserLogin,输入用户名和密码

 

调用LoginUser.XML,得到所有以前登陆过的ID

 

调用LoginUser.XML,得到用户的配置信息

 

错误

用户名和密码是否正确

 

退出系统

正确

下载相关资料,进入主界面

图4-2系统登录流程图

用户进入登录窗口,输入用户名和密码,如果本地LoginUser.XML文件可以验证其信息,则进行本地验证,如果验证成功,系统加载个人信息和好友信息,如果验证失败,系统进行服务器验证,如果服务器验证成功,系统同样加载个人信息与好友信息;如果服务器验证仍然失败,则自动退出系统登录窗口自带了ErrorProvider_UserName和ErrorProvider_UserPassword两个系统空间,目的是为了方便用户按规定正确的输入用户名和密码,如果用户输入不符合规定,则该控件会做出相应的提示。

系统登录模块流程图如图4-2所示。

4.5文字通信模块

如图4-3所示为信息传输模块流程图。

假设A用户给B用户发送文字信息,首先A用户打开Form_UsermessageSend窗口,在Form_UsermessageSend中,A用户编写需要传送的信息,编写完毕则可点击下方的发送按钮。

发送完毕后,系统会做出以下三种情况中的一种反应。

图4-3文字通信流程图

(1)信息发送成功。

这种情况是B用户在线,并且成功收到A用户发送的信息。

同时,B用户端的监听端口收到A用户端发来的信息,并且在B用户端显示信息内容。

(2)网络故障。

这种情况发生是因为A用户端网络故障,其中包括网卡故障,局域网故障等等。

如果遇到这种情况,A用户点击发送按钮后,系统提示“信息发送失败,请检查网络是否畅通。

(3)B用户不在线。

这种情况是在B用户处于离线状态,A用户点击发送按钮后,系统会将A用户发送的信息保存到离线信息库中,等待B用户上线后进行信息转发。

4.5文件传输模块

如图4-4所示,文件传输模块提供客户端之间的文件传送,并且能实现被传输文件的安全性和完整性。

该模块能实现用户之间的随时对话,从请求文件传输发起,到文件传输完毕。

 

图4-4文件传输流程图

4.6好友添加模块

如图4-5所示为添加好友的流程图:

没有选择任何好友

Y

friendId=-1?

没有选择任何好友

N

Y

friendId=自身Id

不能添加自己为好友

N

Y

不能重复添加好友

对方已经为好友

N

获得对方的好友验证friendshipPolicyId

Y

对方不允许被添加为好友

friendshipPolicyId=3?

N

Y

发出好友请求消息

friendshipPolicyId=2?

N

添加好友

结束

图4-4好友添加流程图

第五章即时通信软件的功能展示

5.1登录模块

当用户运行程序时,首先进入的是登录界面,如图5-1所示,用户登陆时,输入自己的用户名和密码登陆即可,如果没有账号,则单击“注册新用户”标签,可以打开注册界面;

如果有已注册的账号,则在输入账号与密码后,点击“登录”按钮,可以打开主界面。

如图5-2所示,登陆后在“我的好友”列表中显示当前好友列表,包括好友的头像和昵称。

在主界面的顶部显示当前登陆的用户头像,昵称和登录账号。

当有新的聊天消息时候。

发来的消息的好友头像要闪动,双击头像弹出“聊天”窗口后,头像停止闪动,当有添加好友请求消息时,窗体底部的好友请求验证按钮要闪烁,单击该按钮弹出“系统消息”窗体后,按钮停止闪烁。

通过主窗体下方的按纽打开“查找/添加好友”窗体,“个人信息”窗口,“系统消息”窗口,也可刷新好友列表和退出程序。

图5-1登录模块

图5-2主界面

如果输入有误,则出现如图5-3所示界面:

图5-3输入错误

程序也不允许在账号或密码处输入空格字符,如有此情况,则会出现图5-4与图5-5所示界面:

图5-4输入错误图5-5未输入账号

5.2注册界面

如图5-6所示,当在登录界面点击“注册新用户”后,将打开注册页面,资料填写完整后,点击“确认注册”按钮进行注册。

图5-6注册界面

5.3查找/添加好友

在主界面中单击“查”字样按钮后,出现查找/添加好友界面。

如图5-7所示,输入帐号或昵称,点击“查找”可以显示查询结果。

图5-7查找/添加好友

5.4即时聊天及传输信息

如图5-8所示,输入要发送的信息,点击发送即可。

若要传送文件可点击传输文件按钮,如图5-9所示,文件开始传输,用户随时可看到文件传输情况。

图5-8发信息窗口

图5-9文件传输

第六章总结与展望

6.1总结

两个星期的课程设计时间过得很快,我从看到课题时的无从下手,到后来查阅资料,找到这个课题设计的关键之处,同时也熟悉了即时通信软件设计的相关技术。

在老师的严格要求下,终于按时完成了本次课程设计的任务。

虽然时间有限,这次课程设计做的有些仓促,但是这次课设依然让我受益匪浅。

除课设本身之外,也让我明白了论文撰写的一些必须严格遵守的规则。

6.2展望

即时通信最初只有发送即时文本信息等简单功能,此后陆续又具有文件传输、音视频聊天及网络游戏等更高级的功能。

历经十多年,即时通信正在向新一代的综合即时通信演进,即从文本向语音、视频和多媒体,从固定网络向无线移动,从个人通信向企业即时通信和协作演进。

随着计算机和通信技术快速发展,即时通信将提供的服务会更加丰富,网络虚拟社区将会普及,即时通信将更加凸显个人信息处理的能力,同时与社会文化和本地化应用将进一步深入融合。

随着即时通信标准及安全的完善和发展,即时通信有可能实现各个通信系统之间的统一接入。

另外,即时通信将会进一步整合有线和无线业务,继续扩大增值服务功能的范围,如果政策允许,即时通信软件甚至有可能与固话互通。

在安全方面,随着技术手段的不断突破,即时通信产品的安全性会进一步提高,稳定性日趋成熟。

 

参考文献

[1]刘丽,梁对.即时通信系统的设计与实现.通信指挥学院,2006

[2]谭献海.网络编程技术及应用.清华大学出版社,2009

[3]卿斯汉.安全协议.清华大学出版社,2010

[4]孙海民.精通WindowsSockets网络开发.人民邮电出版社,2010

[5]杰夫瑞(JeffreyR).Windows核心编程(第5版).清华大学出版社,2009

[6]张建辉.组合加密算法在即时通信中的应用.计算机安全,2009

[7]胡道元.网络安全.清华大学出版社,2001

[8]袁津生.计算机网络安全基础.人民邮电出版社,2004

[9]卿斯汉.操作系统安全.清华大学出版社,2005

[10]卿斯汉.安全协议.清华大学出版社,2003

[11]计算机网络安全.戴红.计算机网络安全.电子工业出版社,2008

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

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

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