基于SOCKET技术的网络即时通讯软件的设计与实现文档格式.doc
- 文档编号:3987269
- 上传时间:2023-05-02
- 格式:DOC
- 页数:39
- 大小:616KB
基于SOCKET技术的网络即时通讯软件的设计与实现文档格式.doc
《基于SOCKET技术的网络即时通讯软件的设计与实现文档格式.doc》由会员分享,可在线阅读,更多相关《基于SOCKET技术的网络即时通讯软件的设计与实现文档格式.doc(39页珍藏版)》请在冰点文库上搜索。
3.3数据库设计 18
3.3.1数据库结构设计 19
3.3.2数据表设计 19
3.3.3数据字典 21
(1)聊天信息字典 21
4详细设计 22
4.1服务器端 22
4.1.1服务器建立和启动模块 22
4.1.2数据库交互模块 23
4.1.3处理客户端请求模块 25
4.1.4异常处理模块 25
4.2客户端 25
4.2.1客户端与服务器建立连接模块 25
4.2.2用户登陆模块 26
4.2.3注册模块 26
4.2.4通讯模块 27
4.2.5聊天模块 28
4.2.6查找好友模块 29
4.2.7个人信息模块 30
5总结 32
参考文献 33
致谢 34
附录 35
基于socket技术的网络即时通讯软件的设计与实现
摘要:
本设计以JAVA语言作为开发平台,开发了一个跨平台的,多线程的即时通信软件。
其中主要应用的技术有数据库技术和SOCKET网络编程技术和JAVA语言的程序界面设计技术(SWING)。
它包括客户端和服务器端,客户端和服务器端的通信方式采用了SOCKET通信原理。
客户端采用了JAVA语言标准的图形界面设计技术(SWING),并结合数据库的数据管理功能设计并开发完成了一个功能全面的即时通信软件系统。
关键词:
即时通讯;
网络;
JAVA;
SWING
DesignandImplementationofNetworkImmediateCommunicationSoftwareBasedonSocket
Abstract:
Thisdesigndevelopedthesoftwareofacross-platform,multi-threadedreal-timecommunicationsoftwarebytheJAVAprogramminglanguage.ThemainapplicationtechnologyisdatabaseandSOCKETnetworkandJavaprogramminglanguageprograminterfacedesigntechnology.Itincludesclientandserver.Thecommunicationsbetweentheserverandclienthaveusedsocketcorrespondenceprinciple.TheclienthasusedtheJAVAlanguagegraphicalinterfacetechnology(SWING),andcombineddatabase’sdatamanagementfunctionaltodesignedanddevelopedthesoftwareofthefullyfunctionalreal-timecommunication.
Keywords:
Networkimmediatecommunicationsoftware;
Internet;
Java;
Swing
1前言
近年来,即时通讯软件行业的发展迅速,它具有的实时性、跨平台性、成本低、效率高等诸多优点。
该软件一经面世迅速地得到了多方面人士的亲赖,它的适时出现提供给现代的商务人士一个更多的信息传递方式。
即时通讯软件的优点不仅仅体现在了商务应用中,它还提供给了人与人之间的一种全新的沟通方式,由此得到了绝大部分80年后的新一代人的喜爱。
一款好的网络即时通讯软件,不但为坐在电脑面前的人们架起了一座沟通的桥梁,更创造了一个广阔的市场。
在国内的腾讯公司是最早提供即时通讯软件服务的厂商之一,到现在已经占据了国内市场的80%以上的市场份额,在这个行业内极具影响力。
随着中国电脑的普及和上网的成本降低,网络即时通讯软件的用户在未来的几年内会持续的高速的增长。
据Gartner公司的研究报告预言,到2007年,即时通讯将成为网上交流的主导方式,同时该行业的竞争也将越来越激烈。
因此,研究和设计一款网络即时通信软件,倾力打造一款适合于中国人群使用的网络即时通信软件具有十分重大的意义。
2可行性研究
2.1开发背景
电子邮件,曾经是网络交流的主要方式,但是随着人们对信息实时性的要求不断的提高,电子邮件不适合消息的实时收发的弊端也日益突出,为了满足人们新的要求,于是一种全新的软件诞生——即时通信软件(IM软件)
中国网民人口为全球第二,92.1%的网民认为互联网提升了生活质量和工作效率。
许多的企业都在企业的内部网中建立的即时的网络通信软件系统,方便企业员工更为方便的传递信息,并且可以避免外部网络环境的所带来的影响,在信息安全方面也做得比较成功。
在未来的几年即时通信软件的用户还会持续的以较高的速度增长,对于即时通讯软件的需求还将继续增长。
因此,鉴于聊天软件所特有的特性开发一个通用的即时通讯软件的系统具有重要的意义。
2.2技术可行性分析
JAVA语言已经经历了十几年的发展,技术上已经十分成熟可行,广泛的应用于客户机/服务期(B/S)系统。
基于JAVA开发的众多的应用也是层出不穷,其中包括,JSP,SERVLET,JDBC,JMS等技术。
所以用JAVA语言设计即时通信软件系统是完全可行的。
2.3面临问题及现状
中国市场上的网络即时通讯软件各有所长,但是即时通讯软件的根本还是在用户,如果用户过度的集中,那么行业垄断就必然会出现。
各个即时通讯软件之间不能相互通信,直接导致了用户更换即时通讯软件时要付出较高的成本。
既不利于即时通信软件服务提供商提高服务质量,也不利于整个行业的发展。
2.4开发目的及意义
结合现有的知识,开发一个跨平台的通用的即时通信软件具有十分重大的意义。
一方面,锻炼自己的编写程序的能力。
另一方面,争取把这个即时通讯软件推给用户使用。
使他们更加方便快捷的传递信息,提高自己的工作效率。
2.5系统综合要求
2.5.1运行环境
(1)本系统基于WINDOWSXP和SQL2000开发,适合WIN2000/WINXP等平台上运行。
(2)赛扬Ⅱ800以上,128内存,至少20M硬盘空闲空间。
(3)JRE1.5以上的java运行环境。
(4)客户端要求必须有SQL2000的JDBC驱动
2.5.2性能要求
(1)客户端
客户端与服务器端、客户端与客户端能够进行信息收发功能,信息内容不能超过200字符,信息发送延迟时间小于6秒,否则信息发送失败,并向用户返回失败原因。
(2)服务器
服务器端需要同时响应最低200个用户的访问量。
3需求分析
在现代的社会,网络及时通信软件在我们的学习工作生活中越来越重要,它可以极大的提高工作效率,增强人与人之间的沟通。
到目前为止,网络及时通信软件的用户群体还在不断的增长,各个大中型企业也都建立了自己的即时通讯平台。
网络即时通讯软件也标志着信息社会的来临,它集聊天、视频、传送文件发布以及多种娱乐功能,已经成为工作学习的有力的助手。
3.1系统总体功能
本软件模仿腾讯QQ制作,是基于局域网的即时通讯工具,开发一个即时通讯软件系统,使其具有如下的功能:
(1)能够在局域网内进行基本的聊天功能。
(2)在服务器端要求保存用户注册时候所填写的资料,如:
帐号、昵称、性别、用户的姓名、电话、电子邮件、地址、邮编等等。
(3)提供个人的简介、使用户可以自己填写自己的基本情况、如:
爱好、兴趣、个性签名等。
(4)提供用户自己定义自己的形象功能。
(5)用系统的提示音来回应用户的各种操作。
3.2开发工具以及使用的主要技术简介
SWING简介:
SWING技术是有SUN公司开发的一套标准的基于JAVA平台的图形界面发工具,具有跨平台的功能,在界面的美观上也比它的第一代(AWT)有了很大的改善,并且提供了许多了简单高效的组件,使用户可以快速的开发出一个基于JAVA语言的一个GUI程序,并且可以一次编译到其他系统平台也可以运行。
JAVA多线程技术:
多线程的各个线程看上去像是并行地独自完成各自的工作,就像一台一台计算机上运行着多个处理机一样。
在多处理机计算机上实现多线程时,它们确实可以并行工作,而且采用适当的分时策略可以大大提高程序运行的效率。
而作为接受客户端请求的服务器来说,必须使用多线程技术来接受不同时刻的请求,接收一个处理一个,将其放入线程队列,然后继续监听其他的请求。
网络通讯与Socket编程:
java网络编程中有两种不同的通讯协议,分别是TCP(面向连接)与UDP(面向无连接),两种协议各有优缺点:
TCP:
是TransferControlProtocol的简称,是一种面向连接的保证可靠传输的协议。
通过TCP协议传输,得到的是一个顺序的无差错的数据流。
发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是serversocket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
UDP:
是UserDatagramProtocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能保证的。
JDBC数据库技术:
JDBC,全称为JavaDataBaseConnectivitystandard,它是一个面向对象的应用程序接口(API),通过它可访问各类关系数据库。
JDBC也是java核心类库的一部分。
JDBC的最大特点是它独立于具体的关系数据库。
与ODBC(OpenDatabaseConnectivity)类似,JDBCAPI中定义了一些Java类分别用来表示与数据库的连接(connections),SQL语句(SQLstatements),结果集(resultsets)以及其它的数据库对象,使得Java程序能方便地与数据库交互并处理所得的结果。
使用JDBC,所有Java程序(包括Javaapplications,applets和servlet)都能通过SQL语句或存储在数据库中的过程(storedprocedures)来存取数据库。
SWING界面设计:
java的扩展包,其中包括众多的控件以及丰富的控件操作功能,使用户可以简单的利用它画出应用程序的界面,结合eclipse3.0带的绝对定位类包,可以设计出非常好看的用户界面。
JAVA技术优势:
Java是一个广泛使用的网络编程语言
它是一种新的计算概念。
首先
作为一种程序设计语言
它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制、具有很高的性能。
其次
它最大限度地利用了网络
Java的小应用程序
(applet)可在网络上传输而不受
CPU和环境的限制。
另外
Java还提供了丰富的类库
使程序设计者可以很方便地建立自己的系统。
Java可移植特性与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。
另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。
3.2.1数据库MicrosoftSQL2000简介
数据库是数据管理的最新技术,是计算机科学的重要分支。
数据库,顾名思义,是存放数据的仓库。
为了有效的管理数据库,常常需要一些数据库管理系统(DBMS)为用户提供对数据库操作的各种命令、工具及方法,包括数据库的建立和记录的输入、修改、检索、显示、删除和统计等。
SQLServer是关系数据库,它除了支持传统关系型数据库对象和特性外,也支持现今关系型数据库常用的对象和存储过程、视图等。
它支持目前关系型数据库必定要支持标准查询语言——SQL(StructuredQueryLanguage)。
SQLServer另外一个重要的特点是它支持数据库复制的功能,当你在数据库上执行更新时,可以将其更新结果传到远程SQLServer相同的数据库上,让两边数据库的数据保持同步。
SQLServer在现今流行的Client-Server结构中是扮演服务器端角色。
它主要的职责是存储数据和提供一套方法来管理这些数据,并且相应来自Client的连接和数据存取需求。
当今社会是一个信息化的社会,各行各业的数据信息都比较丰富,因此利用数据库管理系统管理数据是十分必要的,图书馆中进而体现的更加明显,管理员可以从成千上万本书的数据库中快速地检索出读者想要借阅的图书……等等。
MicrosoftSQL2000数据库是一个面向对象,采用事件驱动机制的新型关系数据库管理系统(RDBMS)它既可以通过ODBC与其他数据库(Sybase、Paradox等)相连实现数据的交换与共享,也可以与Word、Excel等Office办公软件进行数据信息交换与共享。
3.2.2eclipse简介
Eclipse是目前使用最广泛的JAVAIDE开发工具。
Eclipse一经出现就以其快速,丰富的特性赢得了认可,其主要的属性有、快速的性能、重构功能、快速修复错误、调整、组织导入包、弹出窗口进行代码自动装配。
由于功能强大,Eclipse一度成为JavaIDE领域的霸主。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase,最近Oracle也计划加入到Eclipse联盟中。
EclipsePlatform是一个开放的可扩展的IDE。
EclipsePlatform提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
EclipseSDK(软件开发者包)是3个Eclipse项目的子项目(Platform、JDT、PDE)所生产的组件合并,它们可以一次下载。
这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具。
EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。
Eclipse项目生产的软件以CPL发布,第三方组件有各自自身的许可协议。
3.3客户机/服务期(C/S)工作原理
客户机/服务器(C/S)将应用程序分为了三个部分,客户机、服务器和数据库部分。
通常有服务器在网络的某一个位置运行,并接受来自客户端的消息,然后服务器和数据库进行交互完成特定的功能,比如:
数据读取和存储,数据查询等等,将得到的结果再发回给客户机。
在三层C/S中,表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。
它用于检查用户从键盘等输入的数据,显示应用输出的数据。
为使用户能直观地进行操作,一般要使用图形用户接口(GUI),操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。
检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel)。
该模式的建立基于以下两点:
1、非对等作用;
2、通信完全是异步的。
客户机/服务器模式在操作过程中采取的是主动请示方式:
首先服务器方要先启动,并根据请示提供相应服务过程如下:
(1)打开一个通信通道并告知本地主机,在某一个公认地址上接收客户请求。
(2)等待客户请求到达该端口。
(3)接收到重复服务请求,处理该请求并发送应答信号。
(4)返回第二步,等待另一客户请求
(5)关闭服务器。
客户方:
(1)打开通信通道,并连接到服务器所在主机的特定端口。
(2)向服务器发送服务请求报文,等待并接收应答,继续提出请求……。
(3)请求结束后关闭通信通道并终止。
(4)关闭SOCKET流。
3.4套接字(SOCKET)原理图
图1socket套接字原理图
FiglSocketprocess
3.5系统逻辑模式
本软件采用了当前流行的客户端/服务器模式(C/S模式)。
各个客户端采用TCP/UDP和服务器相连接,在局域网中采用的是TCP协议和服务器连接。
TCP是一种面向连接的保证可靠传输的协议。
因此在安全性要求高的局域网中应用中TCP协议比UDP有着很大的优势。
图2Socket软件总体结构图
Fig2StructureofTheSoftwarebaseonsocket
3概要设计
经过对即时通讯软件了系统进行详尽的了解和分析,该系统应包括,客户端、服务器和数据库三个主要部分。
(1)客户端模块主要是提供给用户一系列的功能,如:
帐号注册、发送消息查找好友、添加好友、删除好友等功能。
(2)数据库模块主要是存储和用户相关的信息,如:
基本资料,离线消息、好友列表等功能。
(3)服务期模块的主要功能对收到的客户端的消息进行判断,并做相应的处理,如:
转发消息、读取离线消息、删除好友、添加好友等操作。
3.1客户端
客户端应包括以下的几个的功能模块来实现其主要功能,如图3所示。
客户端
用户注册(WEB)
删除好友
发送消息
查找好友
添加好友
图3客户端功能描述图
Fig3Clientfunction
3.1.1用户注册功能模块
用户在填写了注册信息后,WEB网页向服务器请求注册,服务器接受的请求之后把用户的基本信息发给数据库并获得数据库产生的一个注册ID,并将此ID返回给用户。
客户端提交注册信息
服务器做相应的处理
返回客户的注册ID
图4用户注册功能图
Fig4Registerfunction
3.1.2发送消息功能模块
用户发送消息功能如下图5所示,模块的主要功能是用户之间相互传送数据,服务期转发收到的用户发出的信息。
客户端用户向好友发送消息
查询该好友是否在先,
转发消息或者存储这条消息
图5发送消息功能
Fig5Sendmessagesfunction
3.1.3查找好友功能模块
该模块的主要功能是用户查询其他好友,服务期端按照客户端选择的查找类型显示在数据库中查到的数据。
如下图6所示。
客户端用户查找好友
查询当前在线的好友
显示当前在先的好友
图6查找好友功能
Fig6Searchfriendsfunction
3.1.4添加好友模块
该模块的主要功能是用户相互之间添加为好友,以实现系统提供的其他动能,该模块需要和好友查找模块相结合才能够完成添加好友的功能。
如下图7所示。
客户端用户添加好友
根据选择的网友添加到好友列表
显示增加了好友的新的列表
图7添加好友功能
Fig7Addfriendsfunction
3.1.5删除好友模块
该模块的主要功能是用户删除他不想要的好友,如下图8所示,该功能根据用户的要求删除好友,更改该用户的好友列表,给用户发送回馈信息。
客户端用户请求删除好友
删除用户选择的好友,更改该用户的好友列表
返回给客户端消息,客户端做出响应的动作
图8删除好友功能图
Fig8Deletefriendsfunction
3.1.6修改个人信息模块
该模块的主要功能是用户更改其以前注册时填写的部分或全部基本信息,如下图9所示。
客户端用户请求修改个人的信息,填写相关的内容
服务期修改用户的信息
返回给客户端消息
图9修改个人信息功能
Fig9Updateuser’sbasicinformation
3.2服务器
服务期端应包括以下几个主要的功能模块用来处理收到客户端的各种请求。
如下图10所示。
服务器
用户登录模块
用户注册模块
添加、删除好友模块
转发数据模块
查询数据模块
图10服务器功能概图
Fig10ServerMainfunction
3.2.1用户登录模块设计
用户登录模块的设计包括了用户界面的设计和用户帐号和密码的验证程序编写。
本软件的程序界面由我实习时候的同事杨纯(湖南生力科技有限公司)帮助设计,软件整体显得简洁,美观。
程序部分的流程图如下图11所示。
F
T
登陆请求
取得在线好友列表,更新在线的状态,
登陆成功显示程序主界面
结束
开始
身份验证
读取好友的离线消息
图11用户登录流程图
Fig11Userregisterproccess
3.2.2新用户注册模块设计
该系统的注册模块是用户使用改系统的唯一入口,所有的用户必须经过注册才能使用该系统。
用户访问注册模块的WEB页面时,系统要求用户按照用户注册信息的格式输入用户的基本信息,若用户输入的信息无误,则返回在服务期中生成的帐号,否则返回前一页要求用户重新输入,直至用户输入的信息准确无误为止。
如下图12所示。
填写注册信息请求注册
检查信息是否符合要求
在数据库中生成新的ID,并返回给用户
图12用户注册流程图
Fig12Userregist
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SOCKET 技术 网络 即时通讯 软件 设计 实现