基于JAVA即时通讯系统.docx

上传人:b****3 文档编号:3901037 上传时间:2023-05-06 格式:DOCX 页数:41 大小:1,014.98KB
下载 相关 举报
基于JAVA即时通讯系统.docx_第1页
第1页 / 共41页
基于JAVA即时通讯系统.docx_第2页
第2页 / 共41页
基于JAVA即时通讯系统.docx_第3页
第3页 / 共41页
基于JAVA即时通讯系统.docx_第4页
第4页 / 共41页
基于JAVA即时通讯系统.docx_第5页
第5页 / 共41页
基于JAVA即时通讯系统.docx_第6页
第6页 / 共41页
基于JAVA即时通讯系统.docx_第7页
第7页 / 共41页
基于JAVA即时通讯系统.docx_第8页
第8页 / 共41页
基于JAVA即时通讯系统.docx_第9页
第9页 / 共41页
基于JAVA即时通讯系统.docx_第10页
第10页 / 共41页
基于JAVA即时通讯系统.docx_第11页
第11页 / 共41页
基于JAVA即时通讯系统.docx_第12页
第12页 / 共41页
基于JAVA即时通讯系统.docx_第13页
第13页 / 共41页
基于JAVA即时通讯系统.docx_第14页
第14页 / 共41页
基于JAVA即时通讯系统.docx_第15页
第15页 / 共41页
基于JAVA即时通讯系统.docx_第16页
第16页 / 共41页
基于JAVA即时通讯系统.docx_第17页
第17页 / 共41页
基于JAVA即时通讯系统.docx_第18页
第18页 / 共41页
基于JAVA即时通讯系统.docx_第19页
第19页 / 共41页
基于JAVA即时通讯系统.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于JAVA即时通讯系统.docx

《基于JAVA即时通讯系统.docx》由会员分享,可在线阅读,更多相关《基于JAVA即时通讯系统.docx(41页珍藏版)》请在冰点文库上搜索。

基于JAVA即时通讯系统.docx

基于JAVA即时通讯系统

分类号:

TP393.09UDC:

密级:

公开编号:

 

大学

学位论文

 

即时聊天系统设计实现

 

论文作者姓名:

申请学位专业:

通信工程

申请学位类别:

工学学士

指导教师姓名(职称):

(教授)

论文提交日期:

 

即时聊天系统设计实现

摘要

计算机网络技术在过去的四十年里获得了飞速发展,网络在人们的日常生活中扮演着越来越重要的角色,而网络即时聊天(IM,InstantMessaging)是人们网络生活中的主要活动之一,一款优秀的网络聊天软件应当具有占用资源小、界面友好、功能完善、简单易用等特点。

如今的网络即时聊天工具有很多,知名的如QQ、MSN等等。

本文旨在设计一种网络即时聊天工具,系统采用基于服务器的客户端/服务器(Client/Server)结构模式;鉴于JAVA的强大网络编程性能,采用面向对象的JAVA语言作为开发语言;以Socket类来实现客户端和服务器之间的信息交换;以Java提供的多线程功能来实现多点对多点的聊天,增强了程序对系统资源的利用;开发工具使用MyEclipse。

最终完成的IM工具可以实现文字聊天、文件传输、添加和删除好友以及系统消息发送等等功能。

关键词:

Java;Client/Server;Socket;多线程;TCP/IP

 

 

TheDesignandRealizationofIMSystem

Abstract

Computernetworktechnologywontherapiddevelopmentofthenetworkoverthepastfourdecades,networkplaysanincreasinglyimportantroleinpeople'sdailylife,andinstantmessagingisoneofthemainactivitiesinpeople`snetworklife,agoodinstantmessagingsoftwareshouldhaveasmallfootprint,friendlyinterface,completefunctions,easytouseandsoon.Today'snetworkshavealotofinstantmessagingtools,knownasQQ,MSNandsoon.

Thispaperaimstodesignainstantchattool,thesystemusesaserver-basedClient/Serverstructuremodel;GivenstrongnetworkofJAVAprogrammingperformance,object-orientedJAVAlanguageasadevelopmentlanguage;toSocketclasstoimplementtheclientandserverexchangeofinformationbetween;multithreadinginJavaprovidesfeaturestoachievemulti-pointchat,enhancedtheprogramforutilizationofsystemresources;developmenttoolstouseMyEclipse.

ThefinishedIMtoolscanachieveatextchat,filetransfer,voicechat,add,deletefriends,andsystemmessagesandmore.

Keywords:

Java;Client/Server;Socket;MultithreadedProgramming;TCP/IP

 

 

目录

论文总页数:

30页

1绪论1

1.1课题背景1

1.2发展概况1

1.3课题研究意义2

1.4本文结构安排2

2理论技术介绍2

2.1Java语言2

2.1.1Java的历史和演变2

2.1.2Java的关键特性3

2.2C/S结构3

2.3Socket套接字4

2.3.1TCP/IP和UDP4

2.3.2Socket基本含义5

2.3.3Socket工作过程5

2.4多线程编程6

3系统分析7

3.1系统实现原理7

3.2系统开发目标7

3.3系统需求分析8

3.3.1业务需求8

3.3.2用户需求8

3.3.3功能需求8

3.4技术需求9

3.4.1开发工具和技术9

3.4.2软硬件环境9

4系统概要设计9

4.1系统总体架构设计9

4.2系统流程分析10

4.2.1客户端流程分析10

4.2.2服务器端流程分析10

4.3客户端功能模块分析11

4.3.1注册模块12

4.3.2登录模块12

4.3.3聊天模块12

4.4服务器端功能模块分析13

4.4.1查看在线用户13

4.4.2发送系统消息13

5系统具体实现13

5.1系统架构实现13

5.2登录模块实现14

5.2.1流程分析14

5.2.2结构设计14

5.2.3界面设计15

5.2.4功能实现16

5.3注册模块实现17

5.3.1流程分析17

5.3.2结构分析17

5.3.3界面设计18

5.3.4功能实现19

5.4聊天模块实现20

5.4.1流程分析20

5.4.2结构分析20

5.4.3界面设计21

5.4.4功能实现23

5.5传输文件模块实现23

5.5.1流程分析23

5.5.2结构分析24

5.5.3功能实现24

5.6服务器模块25

5.6.1流程分析25

5.6.2界面设计25

5.6.3功能实现26

5.7本章小结27

6系统运行测试与分析27

6.1系统测试目的27

6.2测试内容、方法及结果27

结论28

参考文献28

致谢29

声明30

 

绪论

课题背景

计算机网络的发展史不过区区半个世纪,和人类的发展史比起来在时间上实在不可同日而语,而正是这短短的半个世纪,人类创造的科技成果却是以往上百万年也无法比拟的。

网络的兴起和发展正是人类科技进步的重要成果。

上网对很多人来说已经是日常生活的一部分,聊天是人们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、QQ为代表的即时通讯软件。

网络即时聊天工具(IM)的历史始于1996年,四位犹太人为了实现一种网上寻呼功能,创造出了ICQ(ISeekYou)“坏小子”,开启了网络即时聊天的时代。

在中国,1998年,深圳腾讯公司开始着手开发设计仿ICQ的本土IM产品OICQ,即现在的QQ,QQ以其独有的优势和特点迅速占领了市场,中国的IM市场也开始迅速发展,腾讯公司是中国最早也是目前中国市场占有率最大的本土互联网即时通信软件开发商。

相比其他通信方式,网络即时通信具有费用低,效率高,用户界面友好等等优点,只要两个人都同时在线,就能传送文字、图片、文件、声音、影像给对方,这大大缩短了彼此的距离,减少了交流成本,增强了人与人之间的情感联接。

发展概况

前文已经提及到了QQ的出现,相信绝大多数网民都会有至少一个QQ帐号,这说明QQ已经融入到了大家的网络生活中,从最初只支持文本式的聊天到现在的图文聊天,语音聊天,视频会话等,技术越来越成熟。

在QQ出现的14年里,用户数量从最初的2人(马化腾和张志东)发展到了2012年的QQ同时在线用户突破一亿七千万。

版本也升级到了如今的QQ2013Beta3。

腾讯公司也借助QQ的成功成为了中国最大的互联网综合业务提供商,也是全球第三大互联网企业和第一大即时通讯服务提供商,年营业额达到了438.94亿人民币(2012年)。

即时通讯工具使用频率之高,超出任何一种网络软件。

2004年,即时通讯软件取代电子邮件,成为最流行的互联网通讯工具。

在未来,网络即时聊天很有可能将取代传统的电话聊天,成为最主流的聊天方式。

尽管当前的即时通讯市场基本处于QQ和MSN的垄断状态,但由于进入门槛较低,竞争还是日益突出,即时通信行业仍处于高速发展期,在未来的发展中呈现出整合多种业务、扩张移动平台、渗透企业用户、融入收费内容等趋势。

当下主流的IM软件(如QQ)集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

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

课题研究意义

现代社会正在逐渐进入网络时代,互联网的发展影响着人们长久以来获取信息的方式甚至生活习惯。

或许将来人与人交流的方式正如电影《机器人总动员》中真理号太空飞船上那样,即便面对面,也离不开计算机的帮助,联系人只是屏幕上那个会动会说话的人像,人的视线从来不会离开屏幕——想象起来或许有些恐怖,但科技发展趋势如此,或许电影中的画面就是未来的真实写照。

虽然目前的聊天软件多种强大的功能,并且支持广域网聊天,但是依旧存在各种问题,如安全问题等。

研究该课题,对于以后研究网络通信具有指导作用。

本文结构安排

本文主要内容是设计实现一种网络即时聊天工具,从网络通信和软件的理论知识出发,详细阐述了各个流程的设计与实现。

本文共分为现简要介绍一下本文的结构安排。

全文共分为六章,各章主要内容如下:

第一章:

绪论。

首先介绍了网络即时聊天系统的课题背景和当今发展概况,然后对对本课题的研究意义做了简单的说明,最后总结了本文的章节结构。

第二章:

理论知识介绍。

主要介绍了涉及到本课题设计的理论基础,介绍Java语言、C/S结构模式、Socket套接字和多线程编程的基本含义、特点或者调用方法,为后期的详细设计做铺垫。

第三章:

系统分析。

主要阐述了系统的开发目标和系统分析。

好比要建造一座大楼,首先需要知道用户的需求、知道要建造一座什么用途的大楼的问题。

以此指导后期编程开发方向。

第四章:

系统概要设计。

首先分析了系统的总体结构和设计流程,从客户端和服务器端两个方面描述了实现各个模块的方法。

也就是设计师为大楼画好设计图纸,构思好大楼轮廓的过程。

第五章:

系统具体实现。

详细说明了系统每个功能模块的设计流程和实现原理,作为本文最为重要的一层,我用了比较多的小章节来说明这一章。

第六章:

系统运行测试与分析。

本章主要研究在本系统完成后如何进行有效的测试以及完成那些测试,并明了测试结果。

理论技术介绍

Java语言

Java的历史和演变

Java是由Sun公司于1991年构思出来的,最初称之为Oak,1995年被命名为Java。

之所以开发Java语言,起初主要是因为对平台独立语言的需要,为家用电子消费产品开发一个分布式代码系统,使用C或C++以及大部分其他语言麻烦的是,它们被设计为针对特定的目标进行编译,这需要一个完整地以该CPU为目标的编译器,而创建编译器很不经济且费时。

因此Sun公司着手开发一种可移植的,平台独立的语言,使之生成不同环境下运行于个汇总CPU之上的代码,最终导致了Java的出现。

Java的关键特性

Java语言具有以下特性:

1.简洁有效、Java的设计目标之一就是让专业程序员能够高效的学习和使用,具有一定编程经验的人会发现掌握Java并不难。

Java省略了C++中所有的难以理解、容易混淆的特性,使之更加严谨、简洁。

2.可移植性、同体系结构无关的特性使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,这使得Java应用软件便于移植,通过定义独立于平台的基本数据类型及其运算,Java数据得以在任何硬件平台上保持一致。

3.面向对象、这是Java最后总要的特性,它不支持类似C语言那样的面向过程的程序设计技术,Java支持静态和动态风格的代码继承及重用。

4.多线程、Java允许编写同时执行许多工作的程序,Java运行时系统为多线程同步提供了完善的解决方案,能够创造出运行平稳的交互式系统。

5.解释型、相对于C/C++来说,用Java写出来的程序效率低,执行速度慢。

但正是通过在不同平台上运行Java解释器来实现其“一次编写,到处运行”的体系结构中立的特点的。

6.分布式、Java是针对Internet的分布式环境而设计的,Java应用程序可以像访问本地文件系统那样通过URL访问远程对象。

使用Java编写Socket通信程序比其他任何语言都简单[1]。

C/S结构

C/S结构,即客户端/服务器端结构(Client/Server),是一种开放模式的系统体系结构。

通过它可以充分应用两端硬件环境的优势,将任务合理的分配到客户端和服务器端来实现,大大降低了通讯开销。

C/S结构的基本工作原理是将应用层任务划分成多个子任务,由多台计算机分工完成,客户端完成数据处理,数据表示以及用户接口的功能;服务器端完成DBMS(数据库管理系统)的核心功能。

通常来说,客户端和服务器分别处于两台不同的计算机上,客户端程序的任务是将用户使用要求发送给服务器端程序,再将服务器端返回的结构以特定的形式显示给用户;服务器端程序的任务是接受并处理客户端提出的服务请求,将处理好的结果返回给客户端程序。

C/S结构能够充分发挥客户端PC的处理功能,很多观众可以先期由客户端进行初步处理后再提交给服务器进行处理,最直接的表现就是客户端相应速度快,应用服务器数据负荷比较轻,以及数据的储存管理功能比较透明等。

Socket套接字

TCP/IP和UDP

要了解Socket的意义,首先要知道网络通信协议TCP/IP和UDP。

TCP/IP(TransmissionControlProtocol/InternetProtocol)即传输控制协议/网间协议。

严格意义上来说,TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。

TCP/IP由四个层次组成:

数据链路层、网络层、传输层、应用层;UDP(UserDatagramProtocol)即用户数据报协议,它属于TCP/IP协议族中的一种协议,是基于传输层的一种无连接的协议。

TCP和UDP协议属于传输层协议,主要功能包括:

一、格式化信息流;二、提供可靠传输服务。

区别在于TCP协议是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯,而UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。

图1展示了基于UDP的服务器与客户端通信方式:

图1服务器与客户端通信模型图

IP是英文InternetProtocol(网间互联协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。

IP协议属于网络层协议,协议定义了以下功能:

一、IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式;二、IP软件完成路由选择功能,选择数据传送的路径;三、IP包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则[2]。

Socket基本含义

Socket的英文原义是“孔”或“插座”,用于描述IP和端口,是一个通信链的句柄。

Socket是通信的基石,是支持TCP/IP协议的网络通信的操作单元。

在Internet上的主机一般运行了多个服务软件,同时提供几种服务。

Socket可以看成在两个程序进行通讯连接中的一个端点,每种服务都打开一个Socket,基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,基于TCP/IP网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留Socket中的输入/输出信息。

将一段信息写入Socket中并绑定到一个端口上,不同的端口对应于不同的服务。

该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。

这样就完成了一次完整的网际通信过程。

Socket从提出时就一直发挥着愈来愈重要的作用,并已成为UNIX操作系统下TCP/IP网络编程标准;甚至WINDOWS、JAVA都配有它的通用接口。

使用Socket可以实现异种机、异种操作系统应用程序间的相互连接和通信。

Socket工作过程

Socket程序的工作过程:

1、建立Socket连接:

在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。

2、数据通信:

利用虚拟连接通道传送数据信息进行通道。

3、关闭:

通信结束时,再将所建的虚拟连接拆除。

与服务器的三次握手:

第一次握手:

原主机发送一个带有本次连接的序号的请求的一个数据帧

第二次握手:

目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。

第三此握手:

源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次连接的序列号的确认[3]。

图2为Socket工作流程图:

图2Socket工作流程图

多线程编程

多线程编程是网络编程的基础,绝大多数网络编程都涉及到两个以上线程的数据传输任务,同时还要保证任务与任务之间互不影响。

在主流的操作系统中,进程和线程是最重要的两个概念,两个概念既有区别也有联系。

简单来说,进程就是一个运行的程序,比如在PC上正在运行的QQ、音乐播放器、word等,进程拥有自己的堆栈空间,有至少一个以上的线程,进程本身无法获取CPU时间片;而线程就是进程里正在运行的任务,比如在QQ聊天时可以同时跟不同好友聊天,也可以在聊天同时传送文件,在这里每一个任务就是一个线程,在多任务操作系统中,线程是运行的最小单位。

多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,且彼此间互相独立。

线程拥有独立的执行控制,由操作系统负责调度,但线程没有独立的存储空间,而是和所属进程中的其他线程共享一个存储空间,这使得线程间的通信大为简单,线程可以获取CPU时间片,所以,真正执行代码功能的是线程而非进程,进程的任务是管理线程和内存等[4]。

在Java中通过java.lang.Thread类来实现多线程编程,Thread类最重要的方法run(),它为Thread类的方法start()所调用,提供了线程所要执行的代码。

在本文中用继承Thread类,覆盖方法run()的方式来实现Thread类的覆盖:

在创建的Thread类的子类中重写run(),加入线程所要执行的代码即可。

Java提供了接口java.lang.Runnable来支持这种方法[5]。

系统分析

系统实现原理

鉴于本文是基于C/S的设计架构,系统分析不外乎是对客户端和服务器端两个大模块的分析,定义两个模块在整个通信过程中所要完成的任务。

首先分析一下服务器端的任务:

1.服务器首先建立一个ServerSocket,并且不断进行监听客户端是否有连接请求或者断开连接(包括判断没有响应的连接超时)。

  2.服务器端是一个信息汇总发送中心,所有客户端的信息都传送到服务器,由服务器根据客户要求判断分发信息。

这两个任务是服务器要完成的最主要的工作,下面是客户端要完成的任务:

1.与服务器建立通信通道,向服务器端发送请求信息。

  2.接收来自服务器的信息。

相对服务器而言,客户端的任务更加简单,有了对两个大模块的分析,就已经设计出了聊天器的大致轮廓和工作步骤。

接下来就是服务器与客户端通信模拟:

图3客户端与服务器通信模拟图

系统开发目标

根据网络即时聊天的定义,即时聊天首先要求即时,准确。

为达到这一目标,服务器端和客户端就要完美配合,“协同工作”。

因此聊天系统具有以下要求:

服务器端:

1.能够正确地、快速地启动服务器。

2.监听指定的端口,等待客户端的连接。

3.建立与客户端的逻辑连接,并能通知用户其他好友。

4.对新上线的用户更新在线好友名单。

5.接收客户端的消息,并能准确无误地处理消息且发出消息到对应客户端。

6.及时地反映发出本地消息和聊天消息。

7.能够给全部用户发送系统消息。

8.当好友断开与服务器连接时,服务器能正确地断开连接,并通知其他用户。

客户端:

1.能够正确启动应用程序,并能向服务器发出连接请求。

2.反映当前好友在线情况。

3.能够和指定好友发出和接收消息。

5.能够和指定好友发送和接收文件。

5.能够正确地断开与服务器端地的连接。

系统需求分析

业务需求

即时聊天工具在消息传送中具有即时,快速且准确的特点。

在C/S架构模型的系统设计中,服务器端必须正确地建立与客户端的连接并能够正确地断开;能及时地接收消息并且及时处理和发送接收到的数据;能及时地通知用户当前好友的在线状况;具有处理异常数据的能力。

对应的客户端必须快速地检查是否能够连接到服务器端;能正确的获得和反映当前好友在线情况;能够正常与特定好友交流;能及时地接收到服务器端的数据且即时处理数据,并能将处理结果反映给用户。

用户需求

从用户角度来说,一个完整的聊天过程包括以下步骤:

一、启动聊天器;

二、如已有帐号可直接登录,若无帐号可以注册;

三、刷新好友列表;

四、双击打开与好友聊天窗口;

五、在输入区输入聊天内容,接收窗口接收消息,选择文件进行传送或接收文件;

七、点击关闭聊天器,系统关闭客户端与服务器的连接。

一款优秀的即时聊天软件应该具有故障率小,登录、发送消息速度及时且准确,丢包率小,聊天界面友好且易操作,周边功能比较完善,占用计算机系统资源少等特点。

所以在设计系统时要考虑到代码的完整性和健壮性,以及后期的可维护性。

功能需求

作为一个完整的聊天软件,应当具备以下基本功能:

1.新用户注册

2.客户端能正确启动程序,并与服务器建立连接

3.显示好友在线情况

4.添加、删除好友

5.与好友聊天,包括文字,图片,文件的传输

6.服务器端发送系统消息

7.客户端能正确地断开与服务器端地的连接

技术需求

开发工具和技术

开发工具使用MyEclipse10.0,MyEclipse是一个十分优秀的用于开发Java等语言的插件集合,功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。

相比之前版本,MyEclipse10.0版本对检索功能以及错误查询功能更加强大。

在系统的开发过程中主要运用的是Socket技术和多线程编程技术,用来实现客户端与服务器的通信以及多点对多点的通信。

软硬件环境

硬件环境:

运行PC应该具备1GHz以上的CPU,128MB以上的内存,20GB以上硬盘规模的若干可连网微机。

软件环境:

windowsXP或以上版本操作系统。

系统概要设计

系统总体架构设计

本系统采用客户端/服务器的设计架构,用户通过客户端发送和接收消息、文件;服务器接收和转发客户端消息、维护用户信息和管理线程的运行。

文字聊天采用的是TCP模式,包括服务器端和客户端;文件传输用的是UDP模式,客户端与客户端

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2