JavaTCPIP协议聊天工具设计方案与开发.docx

上传人:b****7 文档编号:15576353 上传时间:2023-07-05 格式:DOCX 页数:33 大小:42.58KB
下载 相关 举报
JavaTCPIP协议聊天工具设计方案与开发.docx_第1页
第1页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第2页
第2页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第3页
第3页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第4页
第4页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第5页
第5页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第6页
第6页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第7页
第7页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第8页
第8页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第9页
第9页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第10页
第10页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第11页
第11页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第12页
第12页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第13页
第13页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第14页
第14页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第15页
第15页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第16页
第16页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第17页
第17页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第18页
第18页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第19页
第19页 / 共33页
JavaTCPIP协议聊天工具设计方案与开发.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JavaTCPIP协议聊天工具设计方案与开发.docx

《JavaTCPIP协议聊天工具设计方案与开发.docx》由会员分享,可在线阅读,更多相关《JavaTCPIP协议聊天工具设计方案与开发.docx(33页珍藏版)》请在冰点文库上搜索。

JavaTCPIP协议聊天工具设计方案与开发.docx

JavaTCPIP协议聊天工具设计方案与开发

封面

作者:

PanHongliang

仅供个人学习

编号

毕业设计(论文)

题目基于TCP/IP协议的聊天工具的

设计与开发

二级学院计算机科学与工程

专业计算机科学与技术

班级

学生姓名学号

指导教师职称

时间2013.6

摘要

随着时代的进步,互联网日益变得普及和大众化。

当今社会,互联网几乎覆盖了所有行业,由此可见,其在我们的日常生活中所占的地位是显而易见的。

而网络能带给我们的是什么呢?

当然是时效性。

通过网络,我们可以很轻松的和地球那端的人取得联系。

而这个“联系方式”又有很多种了,比如邮件、文字会话、语音会话、视屏会话等。

众所周知的QQ,拥有上亿的注册用户,在国内即时通讯领域占据了第一的位置,因为其具有强大的功能,可以实现文字通讯、语音通讯甚至即时的视屏通讯。

除此之外,还有诸如微软的MSN、网易的POPO,新浪UC等等。

本次毕业设计的内容是基于Java的一款局域网即时通信软件。

Java是一种跨平台的编程语言,其具有的良好的网络功能以及对数据库的全面支持毫无疑问能实现本次设计的所有内容。

本系统采用C/S模式,即客户端/服务器模式,客户端与服务器通过Socket传递数据,服务器采用多线程技术。

利用Eclipse进行开发。

该软件完成后的主要功能有:

点对点、点对多、多对多的聊天,服务器对聊天进行统一管理,比如用户注册,用户登陆,踢出用户等。

关键字:

Java,Socket,多线程,TCP/UDP,C/S

ABSTRACT

Withtheprogressofera,theInternetbecomeincreasinglypopularizationandpopularization.Intoday'ssociety,theInternetcoversalmostallindustries,thusitcanbeseen,itinourdailylifeofthepositionisobvious.WhatistheInternetcanbringus?

Ofcourseistimeliness.Throughthenetwork,wecaneasilyandthattheconnectiontothesideofearth.The"contact"andtherearemanykinds,suchasemail,voice,video,textsession,etc.

KnownasQQ,withhundredsofmillionsofregisteredusers,occupythefirstpositioninthefieldofdomesticinstantcommunication,becauseithasstrongfunction,canachievetextcommunication,voicecommunication,evenreal-timevideocommunications.Besides,therearesuchasMicrosoft'sMSNPOPO,netease,sinaUC,andsoon.ThecontentofthisgraduationdesignisaLANinstantcommunicationsoftwarebasedonJava.

Javaisacross-platformprogramminglanguage,ithasgoodnetworkfunctionandthefullsupportfromdatabasethereisnodoubtthatcanrealizeallthecontentofthisdesign.ThissystemadoptsC/Smode,theclient/servermode,clientandservertransferdatathroughaSockettotheserverusingmultithreadingtechnology.UsingEclipsefordevelopment.

Aftercompletionofthesoftwareofthemainfunctionsare:

pointtopointandpointtochatmore,many-to-many,unifiedmanagementwascarriedoutonthechatserver,suchasuserregistration,userlogin,kickedoutusers,etc.

Keywords:

Java,Socket,multithreading,TCP/UDP,C/S

前言

当今人们每天依赖着的网络,主要是给广大用户提供了即时性的信息。

网络通信则是实现人与人之间交互性沟通最好的方式,我们可以通过网络通信实现异地文字传输、语音通话甚至远程视频通话。

现在很多公司企业都进行远程视频会议。

网络通信无疑给当今的人们带来了极大的便利。

诸如腾讯QQ、微软的MSN、网易的POPO,新浪UC等众多出类拔萃的聊天系统,给我们生活所带来的时效性、便利性是有目共睹的。

于是,本人怀着对网络通信机制以及原理的极大兴趣尝试利用Java语言编写一个微型的局域网聊天软件,可以供多人在一个局域网中同时进行聊天通信。

本课题主要是基于Java这种跨平台的编程语言,利用SQLServer2005数据库进行编写。

通过JDBC将Java和数据库连接起来,从而,我们可以用Java来操作数据库。

本课题内容主要是应用数据库来存储用户信息以及用户聊天记录,所以相对于其他大型的应用,操作起来比较简单。

本次毕业设计所设计的聊天系统应用了C/S(客户端/服务器)模式,这也是软件开发中一种通用的开发模式。

利用Socket进行通信,这也是该聊天系统的关键部分。

利用Java中的多线程技术来实现分工明确的操作。

最后实现局域网即时通讯功能。

第一章概述

1.1课题背景及意义

1.1.1课题背景

当今处于一个信息爆炸的时代,随着Internet的迅速普及和发展,人们之间的沟通和交流变得越来越频繁,以至于到了人们每天的日常生活都离不开这个具有高效时效性的网络。

人们可以通过各种软件建立即时性的联系,比如人们通常用的Email,QQ,MSN等等。

而QQ则是国内人尽皆知的即时性通讯软件,自从1998年腾讯成立以来,QQ的发展几乎是飞跃式的。

据2013年5月13日腾讯官方公布显示,目前注册用户中的活跃用户达到了7.519亿的水平,最高同时在线人数高达1.674亿,这无疑是一个惊人的数据。

鉴于即时通讯软件在当今人们生活中的重要地位,以及本人怀着的对即时通讯软件的通信机制以及其工作原理的好奇,尝试用Java语言编写一款局域网即时通信软件,以此来实践性的研究通信软件的工作流程。

本人通过网络渠道大概了解了QQ的基本通信原理。

大概了解到了QQ是以多个服务器提供服务,服务器管理客户端,客户端之间UDP通信,除非不得已的情况下,服务器才通过TCP转发消息。

其具体工作方式经过本人理解画出如下1-1示意图,

图1-1腾讯QQ工作模式示意图

而提到大家也非常熟悉的MSN,通过网络了解到,它是另一种工作模式,纯TCP通信,而不像腾讯QQ一样TCP和UDP并用,其工作模式如下图1-2所示,

图1-2MSN通信模式示意图

我们会看出,MSN这种通信其实就是TCP通信,而TCP通信就是通过服务器转发消息来实现客户端之间通信的,当客户端1要和客户端2取得联系时,必须通过中间服务器1或者2来实现信息的转发,而服务器在这里的角色其实就是一个中转站了。

这很像我们的电话网络,中转通信模式。

1.1.2课题意义

研究本课题的主要目的在于了解当前通讯软件的通信模式,并试着开发一个能够实现局域网通信的局域网即时通信软件,通过这个过程,让自己更加了解在Java下,实现通信的具体原理和工作流程。

本系统应用了基于Socket局域网通信模式,它为我们提供了一种良好的、安全的通信机制,而且这个在实践中更好的诠释了Socket的通信的根本原理,具有很好的学习和研究价值,可以更深入地提高本人对于Socket通信机制的理解和认识。

基于Socket的局域网通信软件在目前来说是相当广泛的,不但满足了传统的通信需求,还可以扩展其应用范围,以适应更多更大范围的需求。

所以其研究价值也是非常可观的。

1.2课题现状及发展

1.2.1课题现状

基于局域网的即时通讯工具,实际上是通讯领域中一个微缩版本的通信软件,广域网的即时通讯工具采用TCP或者UDP或者TCP、UDP并用的方式来实现通讯。

目前来说,开发技术是非常成熟的了,比如腾讯QQ,微软MSN,新浪UC等,这些通讯工具都实现了广域网的即时通讯,但他们却也各具特色。

比如单一TCP通信的MSN,在稳定传输和安全性上是可圈可点的。

而腾讯的QQ,在功能上则是非常全面的,因为其客户端时间通讯采用UDP方式,所以通讯显得非常的流畅和方便,也大大减轻了服务器的负荷。

这些通讯软件各具特色,实现方面各有所长,但由于他们在商业运营阶段,其实现的具体内部机制,我们不得而知,但是无论他们是怎么实现的,最终也逃不过TCP/IP,UDP通讯的本质。

1.2.2课题发展

鉴于当前这种朝气蓬勃的发展势头,在未来的即时通讯领域,不管是局域网还是广域网,必定会更加的精彩,或许在不久的将来,通讯模式会更加的发达和方便于人类社会。

1.3课题内容、目的及目标

1.3.1课题内容

本课题主要是用Java下的Socket研究局域网通信,并利用Socket编写一个可以供多人通信的局域网聊天软件,此聊天软件分为服务器程序和客户端程序两个独立的工程项目。

他们各自负责相应的工作,从而实现局域网各个客户端之间的相互通讯。

1.3.2课题目的和目标

本课题的目的旨在探究TCP/UDP通信的机制和原理,由于在大学期间并没有对TCP/UDP通信进行系统的专业的学习,所以,对于TCP/UDP通信并没有太多的了解,而当前的通信网络的广泛应用,又让研究其内在的运作模式和机制变得非常有意义的一件事情。

目前来说,通信工具是非常的成熟了,本次毕业设计做的这个关于TCP/UDP通信的局域网聊天系统也不可能实现相应的经济价值,旨在本人在大学的最后阶段有一个更好的收获,能够学到到很多以前没学过的新东西,吸取到更多的知识充实自己对于计算机这门学科认识和研究。

本课题的最终目标是实现局域网的即时通讯,包括点对点、点对多、多对多的相互通讯,最后以一台主机作为服务器,另外用不同的主机作为客户端进行试验验证,能够实现相互间的文字通讯。

第二章开发技术和平台

2.1开发技术

2.1.1Java语言

2.1.1.1Java发展历程

Java的发展历史,可以追朔到1990年。

当时SunMicrosystems公司为了发展消费类电子产品进行了一个名为Green的项目计划。

这个计划的负责任是JamesGosling。

起初他用具有面向对象特征的C++语言编写嵌入式软件,可以放在面包机或PDA(PersonalDigitalAssistant,个人数字助理)等小型电子产品里,以使设备变得更为“聪明”,更具备人工只能。

但后来发现C++并不适合这类任务;因为C++常会使系统失效。

尤其在内存管理方面,C++采用直接地址访问方式,需要程序员记录并管理内存资源。

这造成程序员编程的极大负担,并可能产生多个Bugs。

面包机上的程序错误可能使面包机烧坏甚至爆炸。

为了解决此类问题,Gosling决定开发一种新的语言,并取名为Oak。

它采用了大部分与C++类似的语法对可能具备危险性的功能加以改进,例如将内存管理改为由语言自己进行管理,以减少程序员的负担及可能发生的错误。

Oak是一种可移置的语言,它是一种平台独立的语言,能够在各种芯片上执行,可以降低设备的研发成本。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

2.11.2Java特点

Java是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。

1、简单性

Java语言简单高效,基本Java系统(编译器和解释器)所占空间很少。

由于Java最初是为了对家用电器进行集成控制而设计的,因而具备简单明了的特征。

2、面向对象

面向对象技术是现代工业的一次革新,提高了软件的模块化程度和复用率,缩短了软件开发时间,降低了开发成本。

在Java之前虽然已经有面向对象的程序设计语言问世,但如C++这样的开发语言并不是完全的面向对象,而是面向过程和面向对象的混合体。

Java则是完全面向对象的程序设计语言。

3、安全性

Java是可以用在网络及分布环境下的网络程序设计语言。

在网络环境下,语言的安全性变得更为重要。

Java提供了许多安全机制来保证其网络适用上的安全性。

4、平台独立

平台独立指程序不受操作平台的限制,可以应用在各种平台上。

Java源程序经过编译后生成字节码文件,而字节码与具体的计算机无关。

只要计算机安装了能解释执行字节码的Java虚拟机JVM,就可以执行字节码文件,从而实现Java的平台独立性。

5、多线程

Java具备内建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、独立执行,提高系统的运行效率。

6、网络功能

Java能从全球网络资源获取所需信息,如数据文件、影响文件、声音文件等,并对所得信息进行处理,所以说Java是一种网络语言。

7、执行效率

Java的字节码需要经过Java虚拟机JVM解释成机器码才能执行,所以速度上较慢。

但是随着JVM技术的进步,使得其执行速度直逼C与C++。

2.1.1.3Java与Internet

Java语言取得成功的领域之一就是其他语言数页代码==Java一条语句。

TCP/IP(传输控制协议/网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层),大多数基于Internet的应用程序被看作TCP/IP协议的上一层.如:

ftp,http,smtp,telnet等。

IP地址:

TCP/IP网络中的每台计算机都有唯一的地址--IP地址。

在Java中,有一个用来存储Internet地址的类叫InetAddress。

Java提供的网络功能有三大类:

URL,Socket,Datagram:

1、URL是三大功能中最高级的一种,通过URLJava程序可以直接送出或读入网络上的数据。

2、Socket是传统网络程序最常用的方式,可以认为Socket形如其名插座之意,只要有插头插上了就能够传道电流,而这个电流,我们就可以想象成Socket通信中的Stream(流)了。

3、Datagram是更低级的网络传输方式,它把数据目的地记录在包中,并把数据分成若干块记录在固定大小的数据包中,然后直接放在网络上传递到目的端,至于你到底传送成功与否,这就没它的事了。

2.1.2多线程

进程是一个具体的应用程序,而线程是进程中的一个分支,它是为了单独完成程序中的某一项或一组功能而存在的。

那么,我们在一个程序中要实现的功能就可以划分为多个线程来分别实现,这大大降低了一个程序的复杂性,也提高了程序的处理效率。

在本课题中引入多线程技术无疑显得是非常必要的,那么通信过程中的许多功能就可以用多个线程来实现,从而做到分工明确,改善程序的执行效率。

2.1.3TCP/UDP协议

TCP(TransmissionControlProtocol)和UDP(UserDatagramProtocol)属于传输层协议。

其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。

通过面向连接、端到端和可靠的数据包发送。

通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。

一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

TCP支持的应用协议主要有:

Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:

NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

1、面向连接的TCP

“面向连接”就是在正式通信前必须要与对方建立起连接。

比如你给别人打电话,必须等线路接通了而且对方拿起话筒才能相互通话。

TCP(TransmissionControlProtocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。

一个TCP连接必须要经过三次“握手”才能建立起来,其中的过程非常复杂。

我们来看看这三次“握手”的简单过程:

主机A向主机B发出连接请求数据包:

“我想给你发数据,可以吗?

”,这是第一次“握手”;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:

“可以,你什么时候发?

”,这是第二次“握手”;主机A再发出一个数据包确认主机B的要求同步:

“我现在就发,你接着吧!

”,这是第三次“握手”。

三次“握手”的目的是使数据包的发送和接收同步,经过三次“握手”之后,主机A才向主机B正式发送数据。

以下是三次“握手”的概念图2-1:

图2-1三次“握手”协议概念图

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

2、面向非连接的UDP

“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。

这与现在流行的手机短信非常相似:

你在发短信的时候,只需要输入对方手机号就OK了,至于对方能否收到,这就不是我们的事情了,一切都交给网络处理。

UDP(UserDataProtocol,用户数据报协议)是与TCP相对应的协议。

它是“面向非连接”的协议,它不会与对方建立连接,而是直接就把数据包发送过去!

UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

例如,在默认状态下,一次“ping”操作发送4个数据包,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。

这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。

正因为UDP协议没有连接的过程,所以它的通信效率高。

但也正因为如此,它的可靠性没有TCP协议高。

QQ就使用UDP发消息,因此有时会出现你发送了消息后,会出现发送消息失败的结果。

2.1.4C/S模式

C/S模式是一种两层结构的系统,第一层在客户机上安装了客户机应用程序,第二层在服务器上安装服务器管理程序。

在C/S模式的工作过程中,客户机程序发出请求,服务器程序接收并且处理客户机程序提出的请求,然后返回结果。

C/S模式有以下特点:

1、C/S模式将客户端与服务分离,系统具有稳定性和灵活性的特点。

2、C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性。

3、由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快。

4、在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂。

2.1.5Socket

在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向的链路的一般称为一个Socket。

Socket通常用来实现客户端和服务器的连接。

Socket是TCP/IP协议的一个十分流行的编程方式,一个Socket通常由一个IP地址和一个端口号唯一确定。

Socket所支持的协议不光有TCP/IP,还有UDP。

在Java环境下,Socket编程主要是基于TCP/IP协议的网络编程。

也就是说在Java环境下,我们使用TCP/IP协议的网络编程需要采用Socket机制。

2.2开发平台

开发JavaGUI程序需要一个系统的组件平台,需要很多的组件协同工作才能开发出一个具有良好界面并具有局域网通信功能的聊天软件。

本次毕业设计所要用到的组件包括Eclipse平台,JDK1.6解释器,AWT组件库,SQLServer2005等。

2.2.1硬件环境

开发Java项目所要的硬件要求并不需要太高,达到以下要求即可:

●处理器:

IntelCore2DuoCPU或者更高

●内存:

1GB或者更高

●网络:

局域网

2.2.2软件环境

操作系统:

WindowsXP或者其它可用操作系统

●开发平台:

Eclipse+AWT组件库

●开发语言:

Java

●数据库:

SQLServer2005

2.2.2.1Eclipse

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

Eclipse还附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。

2.2.2.2JDK1.6

JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。

JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库。

2.2.2.3SQLServer2005和JDBC

JDBC是一种用于执行SQL语句的JavaAPI应用程序接口,可以为多种关系数据库提供统一的访问接口。

JDBC由一组用Java语言编写的类和接口组成,通过调用这些类和接口所提供的方法,用户能够以一致的方式连接多种不同的数据库,从而可使用标准的SQL语言来存取数据库中的数据,不必再为每一种数据库系统编写不同的Java代码。

本次毕业应用了JDBC访问SQLServer2005数据库,以完成必要的功能和要求。

2.2.2.4AWT组件

AWT是AbstractWindowToolkit(抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。

本次毕业设计中用Java提供的这个工具包对服务器和客户端进行GUI开发。

第三章系统分析与设计

3.1系统分析

3.1.1系统可行性分析

经济可行性:

由于本系统的主要背景是毕业设计,不考虑到直接的经济效益和其后的商业发展,而只在于注重自身水平和能力的提高。

所以,只要有一台能运行Java软件的电脑即可,而不用考虑到经济问题。

技术可行性:

本系统的开发是利用SQLServer2005作为本系统的后台数

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

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

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

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