基于VB的即时通信系统毕业设计.docx
《基于VB的即时通信系统毕业设计.docx》由会员分享,可在线阅读,更多相关《基于VB的即时通信系统毕业设计.docx(40页珍藏版)》请在冰豆网上搜索。
基于VB的即时通信系统毕业设计
摘要
即时通讯(InstantMessaging)是目前Internet上最为流行的通讯方式,而各
种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务
功能。
随着互联网的发展,即时通讯的运用将日益广泛。
本文围绕即时通讯的基本文字交流功能,设计了管理在线用户,维护在线用
户,实现文字通信的功能。
本系统使用TCP和UDP协议作为传输层的协议,更加便
捷了用户之间的通讯和交友。
该系统为用户提供了一个集文字通信、在线信息、文件传输于一体的即时通
信平台。
经过几个月的项目开发、测试,本即时通讯系统现已可以正常运行。
关键词:
TCP/IP,C/S,Winsock,即时通信系统,VisualBasic
ABSTRACT
InstantMessagingiscurrentlythemostpopularwaytocommunicateontheInternet,bythewayvariousInstantMessagingsoftwarehavebeencontinuouslyappearing;Serviceprovideroffersmoreandmorecommunicationservicesnowadays.AsthedevelopmentoftheInternet,InstantMessagingwillperformawideruseandisgrowingupdayafterday.
Thisthesisisbasedonthefunctionofexchange,whichisthebasiccharacterofinstantmessagingsystem,onlineusersmanagement,safeguardingonlineusersandexchangemessagearecometrue.
Thissystemhasofferedaninstantmessagingplatformincorporatingcharacterscommunication,onlineinformationandfiletransfer.Throughseveralmonthsdevelopandtestcycle,thisinstantmessagingsystemcanalreadyusedtorunnow.
Keywords:
TCP/IP,C/S,Winsock,InstantMessengerSystem,VisualBasic
第1章绪论
网络通信是指两台或多台计算机相连接,通过网络协议实现互相通信、共享资源。
客户机/服务器结构是目前最为流行的网络通信模式,当两台计算机建立连接时,服务器是运行在一方计算机上的应用程序,也称为宿主机,与其他计算机连接的服务,并为被连接的计算机提供数据;客户机是运行在另一方计算机上的应用程序,它请求与服务器连接。
通常一台服务器可连接多台客户机。
网络通信能使多台计算机间数据的传送变得便利、快捷,不再受到距离的限制。
网络即时通信也应运而生。
网络即时通信软件不仅能实现计算机之间数据的传输,而且可以实现计算机之间实时的文字、语音对话和图像、文件的传输。
随着即时通信软件的发展和成熟,它的易用性和实用性也渐渐被广大的用户接受。
1.1研究背景及意义
互联网诞生于传统的电话网络,通讯交流可以说是互联网天然的应用之一。
电子邮件就是最重要的通讯交流工具,是互联网最早的“杀手级应用”。
此后兴起的网络论坛和网络聊天室都是网络聊天的前身。
但是,个人对个人网络聊天的真正崛起还是需要从ICQ开始。
国内来看,从2004年以来,即时通信成为互联网和电信行业最激动人心的热点。
2004年6月,行业的主导服务商腾讯在香港成功上市。
7月,网易在北京推出了新版的即时通讯软件网易泡泡2004,新浪斥资近两亿元收购UC即时通讯技术平台,搜狐也在年初推出即时通讯软件“搜Q”。
作为电信运营商的中国电信和中国网通也动作频频。
在国外,互联网行业引人瞩目的新星GOOGLE也在近几年推出自己的即时通信GoogleTalk,全球即时通信行业的老大ICQ也计划进入中国市场,一时间众者云集,让业界眼花缭乱。
[2]
即时通信系统是一种在后PC时代兴起的,以Internet网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,能够跟踪网络用户在线状态
的网络应用软件。
即时通信系统产生有着深刻的社会原因:
人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时通信软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周围的人保持距离,以致人们更愿意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地域的限制,达到人与人、人与信息之间的零距离交流。
从这点上讲,即时通信系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间。
1.2网络即时通信软件的现状
经过近年来的不断发展,目前的IM软件不再局限于简单的通信功能,而是捆绑或拓展了越来越多的功能。
从理论上讲,凡是互联网上成功的应用均可被IM软件一网打尽,目前比较通行的捆绑功能有浏览器、邮件、网络硬盘、搜索引擎、媒体播放器、RSS/网络日志等。
基于IM软件强大的功能,IM运营商可以开展多种业务,比较典型的有通信类业务、娱乐性业务、商务性业务、广告业务、在线市场调查业务等等(见图1-1)。
图1-1IM软件的功能及IM运营商对用户提供的业务
不难看出,个人用户占据市场主体,企业用户潜力巨大,服务商势必在这个领域展开全新的争夺。
图1-22005年中国即时通信市场个人及企业用户份额
2005年中国互联网用户首次超过一亿人,达到10300万人。
个人即时通信用
户(不包括重复用户)也达到了8500万人,比2004年同期提高35.6%。
2004年中国即时传输总产值是13.8亿元,占整个互联网产业的4.5%。
2005年到达19.1亿元,比同期增长了38.4%,占整个互联网产业的4.6%。
预计到2008年这一数字将达到40.4亿元。
图1-32005-2008年即时通信传输市场规模
1.3本文的内容安排
本文的内容安排如下:
第1章对流行的IM软件进行了追踪与分析,通过对目前一些通讯软件的现状分析,阐述了开发即时通讯软件的必要性和可行性;
第2章对开发软件的技术基础进行了概述,主要围绕实现软件所需的系统结
构、平台选取、以及一些技术方面的基本概念和基本思想;
第3章介绍了软件(客户端)设计思路和概要设计,从总体上介绍软件的设计要求和软件实现的一些功能;
第4章对整个软件设计进行了总结,并对软件存在的一些问题和未来发展提出了一些展望。
第2章实现网络即时通信软件的相关知识
2.1Winsock的原理
Sockets最初只是UNIX系统中最流行的网络通信接口之一,它不支持微机DOS环境和MicrosoftWindows环境。
Sockets在UNIX中成功的应用产生了将其移植到DOS和Windows环境下的设想。
1992年制定出了WindowsSockets规范1.0版;但在实际使用过程中,发现了一些问题,因此由MartinHall领导的WindowsSockets委员会对1.0版作了一些修改,并于1993年推出1.1版规范。
WindowsSockets是MicrosoftWindows的网络程序设计接口,它是从BerkeleySockets扩展而来的。
WindowsSockets在继承了BerkeleySockets主要特征的基础上,又对它进行了重要扩充。
这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。
这些扩充有利于应用程序开发者编制符合Windows编程模式的软件,它使在Windows下开发高性能的网络程序成为可能。
WindowsSockets实现一般都由两部分组成:
开发组件和运行组件。
开发组件是供程序员开发WindowsSockets应用程序使用的,它包括介绍WindowsSockets实现的文档、WindowsSockets应用程序接口(API)引入库和一些头文件。
头文件WINSOCK.H是WindowsSockets最重要的头文件,它包括了WindowsSockets实现所定义的宏、常数值、数据结构和函数调用接口原型。
运行组件是WindowsSockets应用程序接口的动态连接库(DLL),文件名为WINSOCK.DLL,应用程序在执行时通过装入它实现网络通信功能。
[3]
图2-1Socket的通信结构
2.2TCP/IP协议的原理
TCP/IP协议叫做传输控制/网际协议,它是Internet国际互联网络的基础。
TCP/IP是网络中使用的基本的通信协议。
虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:
远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。
通常说TCP/IP是Internet协议族,而不单单是TCP和IP。
[4]
TCP/IP协议的基本传输单位是数据包(datagram),TCP协议负责把数据分成若干个数据包,并给每个数据包加上包头(就像给一封信加上信封),包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式,IP协议在每个包头上再加上接收端主机地址,这样数据找到自己要去的地方,如果传输过程中出现数据丢失、数据失真等情况,TCP协议会自动要求数据重新传输,并重新组包。
总之,IP协议保证数据的传输,TCP协议保证数据传输的质量。
[5]TCP/IP协议数据的传输基于TCP/IP协议的四层结构:
应用层、传输层、网络层、接口层,数据在传输时每通过一层就要在数据上加个包头,其中的数据供接收端同一层协议使用,而在接收端,每经过一层要把用过的包头去掉,这样来保证传输数据的格式完全一致。
图2-2TCP报文封装
TCP/IP协议四层结构的主要功能如下:
网络接口层:
负责接收和发送物理帧
网络层:
负责相邻节点之间的通信
传输层:
负责起点到终点的通信
应用层:
提供诸如文件传输、电子邮件等应用程序
要把数据以TCP/IP协议方式从一台计算机传送到另一台计算机,数据需经过上述四层通讯软件的处理才能在物理网络中传输。
2.3C/S结构的概述
C/S结构(Client/Server结构)是大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
[6]
图2-3客户端/服务器模式通信架构
C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。
但是该结构的程序是针对性开发,变更不够灵活,维护和管理的难度较大。
通常只局限于小型局域网,不利于扩展。
并且,由于该结构的每台客户机都需要安装相应的客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置,因此缺少通用性,具有较大的局限性。
要求具有一定专业水准的技术人员去完成。
2.4基于Socket通信的基本应用模式
在基丁Socket构造TCP/IP网络应用时,通信双方常常构成客户端/服务器的模式,即客户向服务器发出服务器请求,服务器接收到请求后,提供相应的服务。
服务与被服务都是通过传递各种请求消息、响应消息等一问一答的方式来实现灵活的网络应用。
以有连接方式为例,客户端和服务器在通信过程中的基本操作和时序如图2-4所示:
图2-4基于Socket应用的基本时序图
在上述基本时序中,请求服务和提供服务的过程都可以反复进行,直到完成某个预定的应用功能。
这样,通过基本消息传递,可以建立起灵活多样的网络应用。
在实际设计的应用中,服务器往往不只服务于来自单个客户端的请求。
此时,服务器接收到一个连接请求,并建立起了连接,接下来的处理还可以划分为两种截然不同的方式:
1、是直接处理该请求并发送应答信息,然后再进行下面的工作。
在服务器处理请求的过程忠,不可能再对另外的请求进行响应。
只有当一个完整的服务过程完成后,程序再循环回到接收请求的地方,此时才又可以接收下一个请求。
如此周而复始。
这种方式叫做重复服务器,即一次只能处理一个服务请求。
2、是每收到一个服务请求时,就激活一个新的进程(或线程)来专门处理这个客户请求。
新建立的进程(或线程)从创建它的服务器继承了建立好的连接等资源,并使用这个建立好的连接与客户端进行通信,为客户端提供服务。
而原来的服务器就可以立刻又回到等待请求的地方,可以接受下一个连接请求。
新进程(或线程)中服务完成后,关闭自己与客户端的通信链路,并自行终止。
这种方式叫做并发式服务器,即可以同时响应多个客户端的清求。
[7]
如果应用比较简单,客户端较少,同时发生请求的概率很低,或者客户端不介意等待服务的时间,可以采用重复服务器。
而如果客户端较多,并对服务响应的要求较高,就应当采用并发服务器,这种方式可以满足大型和复杂应用的需求。
如果使用无连接的模式,就不存存建立、断开连接等过程。
但是通过基本信息传递实现提供服务的道理与有连接的模式是一样的。
2.5设计工具VisualBasic介绍
BASIC是Beginner'sAll-purposesymbolicinstructionCode(初学者通用符号指令代码)的缩写,是国际上广泛使用的一种计算机高级语言。
BASIC简单、易学,目前仍是计算机入门的主要学习语言之一。
BASIC语言的问世及发展BASIC语言自其问世经历了以下四个阶段:
第一阶段:
(1964年~70年代初)1964年BASIC语言问世。
第二阶段:
(1975年~80年代中)微机上固化的BASIC
第三阶段:
(80年代中~90年代初)结构化BASIC语言。
第四阶段:
(1991年以来)VisualBASIC
1991年,微软推出了VisualBasic(简称VB)1.0版。
这在当时引起了很大的轰动。
许多专家把VB的出现当作是软件开发史上的一个具有划时代意义的事件。
其实,以我们现在的目光来看,VB10的功能实在是太弱了。
但在当时,它是第一个“可视”的编程软件。
这使得程序员欣喜之极,都尝试在VB的平台上进行软件创作。
微软也不失时机地在四年内接连推出VB2.0,VB3.0和VB4.0等三个版本。
并且从VB3开始,微软将ACCESS的数据库驱动集成到了VB中,这使得VB的数据库编程能力大大提高。
从VB4开始,VB也引入了面向对象的程序设计思想。
VB功能强大,学习简单。
而且,VB还引入了“控件”的概念,使得大量已经编好的VB程序可以被我们直接拿来使用,如今,VB已经有了6.0版。
几个定义:
在讨论VisualBasic时,经常可以听到这些术语,因此对这些术语的基本理解十分有帮助。
控件:
提供程序可见界面的可重用对象。
控件的示例有文本框、标签和命令按钮。
事件:
由用户或操作系统引发的动作。
事件的示例有击键、单击鼠标、一段时间的限制,或从端口接收数据。
方法:
嵌入在对象定义中的程序代码,它定义对象怎样处理信息并响应某事件。
例如,数据库对象有打开纪录集并从一个记录移动到另一个记录的方法。
对象:
程序的基本元素,它含有定义其特征的属性,定义其任务和识别它可以响应的事件的方法。
控件和窗体是VisualBasic中所有对象的示例。
过程:
为完成任务而编写的代码段。
过程通常用于响应特定的事件。
属性:
对象的特征,如尺寸、位置、颜色或文本。
属性决定对象的外观,有时也决定对象的行为。
属性也用于为对象提供数据和从对象取回信息。
[8]
2.6本章小结
本章主要介绍了设计过程中用到的一些相关的技术和原理,如TCP/IP和Winsock等。
还有软件的设计平台的介绍,主要是编程工具VB的历史背景和相关的一些主要控件的介绍,为下面的设计奠定了一个良好的理论基础。
第3章网络即时通信软件的设计
3.1即时通信系统的需求分析
3.1.1基本需求
1、一般即时消息格式需求
1)所有实体必须至少使用一种消息格式;
2)必须定义发信者和即时收件箱的标识;
3)必须包含一个让接收者可以回消息的地址;
4)必须反映当前最好的可用性实践。
2、可靠性需求
协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。
3、性能需求
1)传输必须足够的迅速;
2)内容必须足够丰富;
3)长度尽量足够长。
3.1.2协议需求
协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。
即时通讯协议,参与的双方或者多方是即时通讯的实体。
协议必须是双方或者多方参与的,一方单独完成的就不算协议。
这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。
这些信息的格式必须是协议参与方同意并且遵循的。
好的协议要求清楚,完整,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。
3.1.3安全需求
A发送即时消息M给B:
1)如果无法发送,A必须接到确认;
2)协议必须为B提供方法检查A发送了这条信息;
3)协议不能暴露A的IP地址;
4)协议必须为A提供方法保证没有其他个体C可以看到内容M;
5)协议必须为A提供方法保证没有其他个体C可以篡改M。
3.1.4系统需求
1、注册需求
1)即时通讯系统拥有多个账户,允许多个用户注册;
2)一个用户可以注册多个帐号;
3)注册所使用的帐号类型为数字;
4)要防止同一个用户在一段时间内反复注册三个或者三个以上的帐号。
2、通讯需求
1)用户可以传输文本消息;
2)用户可以传输RTF格式消息;
3)用户可以传输文件;
4)客户端与服务器端可以传输消息。
3、好友管理需求
1)用户可以查询好友;
2)用户可以添加好友;
3)用户可以添加多个人为好友,一个用户可以被多个人添加为好友;
4)用户可以删除好友。
3.2界面设计
用户界面是一个应用程序最重要的部分,对用户而言,界面就是应用程序,他们感觉不到幕后正在执行的代码。
不论花多少时间和精力来编制和优化代码,应用程序的可用性仍然在很大程度上依赖于界面的好坏。
VisualBasic采用在窗体上拖曳控件的方式为创建用户界面提供了非常简便的方法,窗体的设计和规划不仅影响到它本身外观的可观赏性,而且对应用程序的可操作性也起到很重要的作用.一个良好的用户界面并不是只有专业的美术人员才能设计出来,在大多数时候,这样的界面设计都是由程序设计人员完成,因此了解用户界面的设计原则,是每个程序设计人员都要做的事情。
[9]
本软件包含10个窗体和5个模块,基本上这些窗体的实现的功能都比较简单,所以窗体里也不用多少个控件,在这里就主要介绍下登录界面和主界面的设计要点。
1、登录界面
这是用户使用此软件首先看到的一个界面,所以对用户来说这个界面的可用性和美观性直接影响到对整个软件的看法。
首先暂且给此软件命名为MY-IM,这样听起来比较直观吧!
想要在登录的窗体标题上显示“MY-IM登录”,只要把窗体属性的Caption值改成“MY-IM登录”
即可。
同时也可以在文字前加上图标(图中没有添加),这样就显得有点特色。
然后把窗体分成两部分:
操作方法文本说明和用户信息输入的控件放置。
为了美观起见,在文本说明输入的前面加上一个图标(如图3-1的“
”);然后再输入“欢迎使用MY-IM”和使用该软件的方法。
最好把这两块文本分成两个标签,因为这样的话后面程序用到的时候显示得就比较清晰明了。
另一部分要使用到的控件有标签、文本框、复选框和按钮。
“用户名”、“密码”和“服务器IP”这三组文字使用的是标签控件,因为这三组文字不需要改动,只是提示用户后面文本框内需要输入的相应内容。
和下面的“记住密码”用的都是复选框控件,同时为了方便用户,把复选框放在输入用户名后,这样用户就可以及时地确认自己是否为新用户,减少了输入的错误。
“记住密码”也一样。
其他两个是按钮,用户输入好信息后,如果没错误,按继续按钮就可以进入主界面;如果不需要登录,按关闭就可以退出程序。
按此步骤设计完成大致的图如3-1所示:
图3-1MY-IM登录界面
2、主界面
主界面是程序的核心,各个功能都是通过这个界面来连接完成的。
这个窗体主要通过菜单控件来完成,总共包括三个菜单项:
文件、工具和帮助。
文件菜单里又包括登录、修改密码、修改个人信息、报表、个人状态和关闭。
登录项在用户登录后显示的是“注销”;点击修改密码就会弹出修改密码的窗体;修改个人信息就会弹出个人信息的窗体;报表的窗体里包括发送给服务器错误、评论及投诉的报表;个人状态显示的是用户目前的状态,分别用几种颜色来表示:
绿色表示在线,红色表示忙碌,黄色表示离开,灰色表示隐身或离线。
关闭就是关闭此软件。
工具菜单里包括发送消息、用户信息、文件传输和添加删除好友。
这些都是通过调用相关的窗体来实现的。
帮助菜单里显示的是关于此软件的一些说明。
其他的有两个快捷的按钮,分别是用来发送和选择用户状态的按钮,因为想要在这两个按钮上添加图标,所以写上了“图标”两个字,下图只是表达一种效果;显示登录的用户自己的用户名和用户目前的状态的标签及显示好友列表的Treeview控件,这个控件的参数要在程序里设置,所以这里没有添加相关的内容;还有状态栏,用来显示各种提示的信息。
根据这样的思路,再对界面进行一定的整合和排列后就得到如图3-2这样的效果。
图3-2软件主界面
3.3系统设计和功能的实现
3.3.1各模块的逻辑分析及设计
前面介绍了软件界面的设计,但光有界面还是远远不够的,这样不能实现任何的功能,所以还需要很重要的后台支持,这个后台就是程序代码。
下图给出的是软件的整体设计框架,这个软件实现的功能都可以从图中看出,下面就先来对各个模块进行分析和代码编写流程的设计。
图3-3软件的整体设计框架
1、用户登录模块。
拥有合法(如:
用户名中不能包含空格等)用户名的用户,输入与上次相同的密码(如果是新用户,只要在用户名后选择新用户即可。
注意:
密码中也不能包含空格!
),然后输入对应的服务器IP地址就可以通过客户端登录到服务器,服务器获取客户端的用户名和网络环境数据,保存在用户数据表中。
客户端登录之后,将从好友数据表中读取好友,从在线用户数