Java基于TCPIP协议的聊天工具的设计与开发毕业论文

上传人:痛*** 文档编号:102248469 上传时间:2022-06-06 格式:DOC 页数:56 大小:1.85MB
收藏 版权申诉 举报 下载
Java基于TCPIP协议的聊天工具的设计与开发毕业论文_第1页
第1页 / 共56页
Java基于TCPIP协议的聊天工具的设计与开发毕业论文_第2页
第2页 / 共56页
Java基于TCPIP协议的聊天工具的设计与开发毕业论文_第3页
第3页 / 共56页
资源描述:

《Java基于TCPIP协议的聊天工具的设计与开发毕业论文》由会员分享,可在线阅读,更多相关《Java基于TCPIP协议的聊天工具的设计与开发毕业论文(56页珍藏版)》请在装配图网上搜索。

1、 . 编号毕 业 设 计(论文)题目基于TCP/IP协议的聊天工具的 设计与开发 二级学院 计算机科学与工程 专 业 计算机科学与技术 班 级 10903XXXX 学生学号 10903XXXXXX 指导教师职称 时 间 2013.6 - 50 - / 56目录摘 要IABSTRACTII前 言- 1 -第一章 概述- 2 -1.1 课题背景与意义- 2 -1.1.1 课题背景- 2 -1.1.2 课题意义- 3 -1.2 课题现状与发展- 3 -1.2.1 课题现状- 3 -1.2.2 课题发展- 4 -1.3 课题容、目的与目标- 4 -1.3.1 课题容- 4 -1.3.2 课题目的和目标

2、- 4 -第二章 开发技术和平台- 6 -2.1 开发技术- 6 -2.1.1 Java语言- 6 -2.1.1.1 Java发展历程- 6 -2.1 1.2 Java特点- 6 -2.1.1.3 Java与Internet- 7 -2.1.2多线程- 8 -2.1.3 TCP/UDP协议- 8 -2.1.4 C/S模式- 10 -2.1.5 Socket- 11 -2.2 开发平台- 11 -2.2.1 硬件环境- 11 -2.2.2 软件环境- 11 -2.2.2.1 Eclipse- 11 -2.2.2.2 JDK1.6- 12 -2.2.2.3 SQL Server 2005和JDBC

3、- 12 -2.2.2.4 AWT组件- 12 -第三章 系统分析与设计- 13 -3.1 系统分析- 13 -3.1.1 系统可行性分析- 13 -3.1.2 系统功能需求- 13 -3.1.3 系统实现原理- 14 -3.1.4 各个模块功能详解- 15 -3.1.4.1 服务器端结构- 15 -3.1.4.2 客户端结构- 16 -3.2 系统设计- 17 -3.2.1 设计原则- 17 -3.2.2 架构设计- 17 -3.2.3 功能设计- 18 -3.2.4 数据库设计- 18 -第四章 系统的实现- 19 -4.1 服务器的设计与实现- 19 -4.1.1 服务器工作流程图- 1

4、9 -4.1.2 服务器主界面- 19 -4.1.3 服务器的开启- 21 -4.1.4 服务器的关闭- 21 -4.1.5 服务器管理用户- 21 -4.2 客户端的设计与实现- 27 -4.2.1 客户端工作流程图- 27 -4.2.2 客户端登陆主界面- 27 -4.2.3 客户端注册主界面- 28 -4.2.4 客户端聊天主界面- 32 -4.2.5 客户端之间聊天- 33 -4.2.6 用户下线- 37 -4.3 系统功能特点与改进- 38 -第五章 结论- 40 -致 - 41 -参考文献- 42 -文献综述- 44 -摘 要随着时代的进步,互联网日益变得普与和大众化。当今社会,互

5、联网几乎覆盖了所有行业,由此可见,其在我们的日常生活中所占的地位是显而易见的。而网络能带给我们的是什么呢?当然是时效性。通过网络,我们可以很轻松的和地球那端的人取得联系。而这个“联系方式”又有很多种了,比如、文字会话、语音会话、视屏会话等。众所周知的 ,拥有上亿的注册用户,在国即时通讯领域占据了第一的位置,因为其具有强大的功能,可以实现文字通讯、语音通讯甚至即时的视屏通讯。除此之外,还有诸如微软的MSN、网易的POPO,新浪UC等等。本次毕业设计的容是基于Java的一款局域网即时通信软件。Java是一种跨平台的编程语言,其具有的良好的网络功能以与对数据库的全面支持毫无疑问能实现本次设计的所有容

6、。本系统采用C/S模式,即客户端/服务器模式,客户端与服务器通过Socket传递数据,服务器采用多线程技术。利用Eclipse进行开发。该软件完成后的主要功能有:点对点、点对多、多对多的聊天,服务器对聊天进行统一管理,比如用户注册,用户登陆,踢出用户等。 关键字:Java,Socket,多线程,TCP/UDP,C/SABSTRACTWith the progress of era, the Internet become increasingly popularization and popularization. In todays society, the Internet covers

7、almost all industries, thus it can be seen, it in our daily life of the position is obvious. What is the Internet can bring us? Of course is timeliness. Through the network, we can easily and that the connection to the side of earth. The contact and there are many kinds, such as email, voice, video,

8、 text session , etc.Known as , with hundreds of millions of registered users, occupy the first position in the field of domestic instant communication, because it has strong function, can achieve text communication, voice communication, even real-time video communications. Besides, there are such as

9、 Microsofts MSN POPO, netease, sina UC, and so on. The content of this graduation design is a LAN instant communication software based on Java.Java is a cross-platform programming language, it has good network function and the full support from database there is no doubt that can realize all the con

10、tent of this design. This system adopts C/S mode, the client/server mode, client and server transfer data through a Socket to the server using multithreading technology. Using Eclipse for development.After completion of the software of the main functions are: point to point and point to chat more, m

11、any-to-many, unified management was carried out on the chat server, such as user registration, user login, kicked out users, etc.Keywords: Java, Socket, multithreading, TCP/UDP, C/S前 言当今人们每天依赖着的网络,主要是给广大用户提供了即时性的信息。网络通信则是实现人与人之间交互性沟通最好的方式,我们可以通过网络通信实现异地文字传输、语音通话甚至远程视频通话。现在很多公司企业都进行远程视频会议。网络通信无疑给当今的人

12、们带来了极大的便利。诸如腾讯 、微软的MSN、网易的POPO,新浪UC等众多出类拔萃的聊天系统,给我们生活所带来的时效性、便利性是有目共睹的。于是,本人怀着对网络通信机制以与原理的极大兴趣尝试利用Java语言编写一个微型的局域网聊天软件,可以供多人在一个局域网中同时进行聊天通信。本课题主要是基于Java这种跨平台的编程语言,利用SQL Server 2005 数据库进行编写。通过JDBC将Java和数据库连接起来,从而,我们可以用Java来操作数据库。本课题容主要是应用数据库来存储用户信息以与用户聊天记录,所以相对于其他大型的应用,操作起来比较简单。本次毕业设计所设计的聊天系统应用了C/S(客

13、户端/服务器)模式,这也是软件开发中一种通用的开发模式。利用Socket进行通信,这也是该聊天系统的关键部分。利用Java中的多线程技术来实现分工明确的操作。最后实现局域网即时通讯功能。第一章 概述1.1 课题背景与意义1.1.1 课题背景当今处于一个信息爆炸的时代,随着Internet的迅速普与和发展,人们之间的沟通和交流变得越来越频繁,以至于到了人们每天的日常生活都离不开这个具有高效时效性的网络。人们可以通过各种软件建立即时性的联系,比如人们通常用的Email, ,MSN等等。而 则是国人尽皆知的即时性通讯软件,自从1998年腾讯成立以来, 的发展几乎是飞跃式的。据2013年5月13日腾讯

14、官方公布显示,目前注册用户中的活跃用户达到了7.519亿的水平,最高同时在线人数高达1.674亿,这无疑是一个惊人的数据。鉴于即时通讯软件在当今人们生活中的重要地位,以与本人怀着的对即时通讯软件的通信机制以与其工作原理的好奇,尝试用Java语言编写一款局域网即时通信软件,以此来实践性的研究通信软件的工作流程。本人通过网络渠道大概了解了 的基本通信原理。大概了解到了 是以多个服务器提供服务,服务器管理客户端,客户端之间UDP通信,除非不得已的情况下,服务器才通过TCP转发消息。其具体工作方式经过本人理解画出如下1-1示意图,图 1-1 腾讯 工作模式示意图而提到大家也非常熟悉的MSN,通过网络了

15、解到,它是另一种工作模式,纯TCP通信,而不像腾讯 一样TCP和UDP并用,其工作模式如下图1-2所示,图1-2 MSN通信模式示意图我们会看出,MSN这种通信其实就是TCP通信,而TCP通信就是通过服务器转发消息来实现客户端之间通信的,当客户端1要和客户端2取得联系时,必须通过中间服务器1或者2来实现信息的转发,而服务器在这里的角色其实就是一个中转站了。这很像我们的网络,中转通信模式。1.1.2 课题意义研究本课题的主要目的在于了解当前通讯软件的通信模式,并试着开发一个能够实现局域网通信的局域网即时通信软件,通过这个过程,让自己更加了解在Java下,实现通信的具体原理和工作流程。本系统应用了

16、基于Socket局域网通信模式,它为我们提供了一种良好的、安全的通信机制,而且这个在实践中更好的诠释了Socket的通信的根本原理,具有很好的学习和研究价值,可以更深入地提高本人对于Socket通信机制的理解和认识。基于Socket的局域网通信软件在目前来说是相当广泛的,不但满足了传统的通信需求,还可以扩展其应用围,以适应更多更大围的需求。所以其研究价值也是非常可观的。1.2 课题现状与发展1.2.1 课题现状基于局域网的即时通讯工具,实际上是通讯领域中一个微缩版本的通信软件,广域网的即时通讯工具采用TCP或者UDP或者TCP、UDP并用的方式来实现通讯。目前来说,开发技术是非常成熟的了,比如

17、腾讯 ,微软MSN,新浪UC等,这些通讯工具都实现了广域网的即时通讯,但他们却也各具特色。比如单一TCP通信的MSN,在稳定传输和安全性上是可圈可点的。而腾讯的 ,在功能上则是非常全面的,因为其客户端时间通讯采用UDP方式,所以通讯显得非常的流畅和方便,也大大减轻了服务器的负荷。这些通讯软件各具特色,实现方面各有所长,但由于他们在商业运营阶段,其实现的具体部机制,我们不得而知,但是无论他们是怎么实现的,最终也逃不过TCP/IP,UDP通讯的本质。1.2.2 课题发展鉴于当前这种朝气蓬勃的发展势头,在未来的即时通讯领域,不管是局域网还是广域网,必定会更加的精彩,或许在不久的将来,通讯模式会更加的

18、发达和方便于人类社会。1.3 课题容、目的与目标1.3.1 课题容本课题主要是用Java下的Socket研究局域网通信,并利用Socket编写一个可以供多人通信的局域网聊天软件,此聊天软件分为服务器程序和客户端程序两个独立的工程项目。他们各自负责相应的工作,从而实现局域网各个客户端之间的相互通讯。1.3.2 课题目的和目标本课题的目的旨在探究TCP/UDP通信的机制和原理,由于在大学期间并没有对TCP/UDP通信进行系统的专业的学习,所以,对于TCP/UDP通信并没有太多的了解,而当前的通信网络的广泛应用,又让研究其在的运作模式和机制变得非常有意义的一件事情。目前来说,通信工具是非常的成熟了,

19、本次毕业设计做的这个关于TCP/UDP通信的局域网聊天系统也不可能实现相应的经济价值,旨在本人在大学的最后阶段有一个更好的收获,能够学到到很多以前没学过的新东西,吸取到更多的知识充实自己对于计算机这门学科认识和研究。本课题的最终目标是实现局域网的即时通讯,包括点对点、点对多、多对多的相互通讯,最后以一台主机作为服务器,另外用不同的主机作为客户端进行试验验证,能够实现相互间的文字通讯。第二章 开发技术和平台2.1 开发技术2.1.1 Java语言2.1.1.1 Java发展历程Java的发展历史,可以追朔到1990年。当时Sun Microsystems公司为了发展消费类电子产品进行了一个名为G

20、reen的项目计划。这个计划的负责任是James Gosling。起初他用具有面向对象特征的C+语言编写嵌入式软件,可以放在面包机或PDA(Personal Digital Assistant,个人数字助理)等小型电子产品里,以使设备变得更为“聪明”,更具备人工只能。但后来发现C+并不适合这类任务;因为C+常会使系统失效。尤其在存管理方面,C+采用直接地址访问方式,需要程序员记录并管理存资源。这造成程序员编程的极大负担,并可能产生多个Bugs。面包机上的程序错误可能使面包机烧坏甚至爆炸。为了解决此类问题,Gosling决定开发一种新的语言,并取名为Oak。它采用了大部分与C+类似的语法对可能具

21、备危险性的功能加以改进,例如将存管理改为由语言自己进行管理,以减少程序员的负担与可能发生的错误。Oak是一种可移置的语言,它是一种平台独立的语言,能够在各种芯片上执行,可以降低设备的研发成本。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2.1 1.2 Java特点Java是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。 1、简单性Java语言简单高效,基本Java系统(编译器和解释

22、器)所占空间很少。由于Java最初是为了对家用电器进行集成控制而设计的,因而具备简单明了的特征。2、面向对象面向对象技术是现代工业的一次革新,提高了软件的模块化程度和复用率,缩短了软件开发时间,降低了开发成本。在Java之前虽然已经有面向对象的程序设计语言问世,但如C+这样的开发语言并不是完全的面向对象,而是面向过程和面向对象的混合体。Java则是完全面向对象的程序设计语言。3、安全性Java是可以用在网络与分布环境下的网络程序设计语言。在网络环境下,语言的安全性变得更为重要。Java提供了许多安全机制来保证其网络适用上的安全性。4、平台独立平台独立指程序不受操作平台的限制,可以应用在各种平台

23、上。Java源程序经过编译后生成字节码文件,而字节码与具体的计算机无关。只要计算机安装了能解释执行字节码的Java虚拟机JVM,就可以执行字节码文件,从而实现Java的平台独立性。5、多线程Java具备建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、独立执行,提高系统的运行效率。6、网络功能Java能从全球网络资源获取所需信息,如数据文件、影响文件、声音文件等,并对所得信息进行处理,所以说Java是一种网络语言。7、执行效率Java的字节码需要经过Java虚拟机JVM解释成机器码才能执行,所以速度上较慢。但是随着JVM技术的进步,使得其执行速度直逼C与C+。2.1.1

24、.3 Java与InternetJava语言取得成功的领域之一就是其他语言数页代码=Java一条语句。TCP/IP(传输控制协议/网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层),大多数基于Internet的应用程序被看作TCP/IP协议的上一层. 如 : ftp, , smtp,telnet等。IP地址:TCP/IP网络中的每台计算机都有唯一的地址-IP地址。在Java中,有一个用来存储Internet地址的类叫InetAddress。Java提供的网络功能有三大类: URL, Socket, Datagram:1、URL是三大

25、功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据。2、Socket是传统网络程序最常用的方式,可以认为Socket形如其名插座之意,只要有插头插上了就能够传道电流,而这个电流,我们就可以想象成Socket通信中的Stream(流)了。3、Datagram是更低级的网络传输方式,它把数据目的地记录在包中,并把数据分成若干块记录在固定大小的数据包中,然后直接放在网络上传递到目的端,至于你到底传送成功与否,这就没它的事了。2.1.2多线程进程是一个具体的应用程序,而线程是进程中的一个分支,它是为了单独完成程序中的某一项或一组功能而存在的。那么,我们在一个程序中要实现的功能就

26、可以划分为多个线程来分别实现,这大大降低了一个程序的复杂性,也提高了程序的处理效率。在本课题中引入多线程技术无疑显得是非常必要的,那么通信过程中的许多功能就可以用多个线程来实现,从而做到分工明确,改善程序的执行效率。2.1.3 TCP/UDP协议TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据

27、发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。1、 面向连接的TCP“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打,必须等线路接通了而且对方拿起话筒才能相互通话。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正

28、式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”才能建立起来,其中的过程非常复杂。我们来看看这三次“握手”的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次“握手”;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次“握手”;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次“握手”。三次“握手”的目的是使数据包的发送和接收同步,经过三次“握手”之后,主机A才向主机B正式发送数据。以下是三次“握手”的概念图2-1:图

29、2-1 三次“握手”协议概念图TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。2、 面向非连接的UDP“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在流行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了,至于对方能否收到,这就不是我们的事情了,一切都交给网络处理。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是“面向非连接”的协议,它不会与对方建立连接,而是直接就把数据包发送过去!UDP适用于一

30、次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息与时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高。但也正因为如此,它的可靠性没有TCP协议高。 就使用UDP发消息,因此有时会

31、出现你发送了消息后,会出现发送消息失败的结果。2.1.4 C/S模式C/S模式是一种两层结构的系统,第一层在客户机上安装了客户机应用程序,第二层在服务器上安装服务器管理程序。在C/S模式的工作过程中,客户机程序发出请求,服务器程序接收并且处理客户机程序提出的请求,然后返回结果。C/S模式有以下特点:1、C/S模式将客户端与服务分离,系统具有稳定性和灵活性的特点。2、C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性。3、由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快。4、在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客

32、户机程序,系统升级和维护较为复杂。2.1.5 Socket在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向的链路的一般称为一个Socket。Socket通常用来实现客户端和服务器的连接。Socket是TCP/IP协议的一个十分流行的编程方式,一个Socket通常由一个IP地址和一个端口号唯一确定。Socket所支持的协议不光有TCP/IP,还有UDP。在Java环境下,Socket编程主要是基于TCP/IP协议的网络编程。也就是说在Java环境下,我们使用TCP/IP协议的网络编程需要采用Socket机制。2.2 开发平台开发Java GUI程序需要一个系统的组件平台,需要很多

33、的组件协同工作才能开发出一个具有良好界面并具有局域网通信功能的聊天软件。本次毕业设计所要用到的组件包括Eclipse平台,JDK1.6解释器,AWT组件库,SQL Server 2005等。2.2.1 硬件环境开发Java项目所要的硬件要求并不需要太高,达到以下要求即可:l 处理器:Intel Core2 Duo CPU或者更高l 存:1GB或者更高l 网络:局域网2.2.2 软件环境操作系统:Windows XP或者其它可用操作系统l 开发平台:Eclipse+AWT组件库l 开发语言:Javal 数据库:SQL Server 20052.2.2.1 EclipseEclipse 是一个开放

34、源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 还附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。2.2.2.2 JDK1.6JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库。2.2.2.3 SQL Server 2005和JDBCJDBC是一种

35、用于执行SQL语句的Java API应用程序接口,可以为多种关系数据库提供统一的访问接口。JDBC由一组用Java语言编写的类和接口组成,通过调用这些类和接口所提供的方法,用户能够以一致的方式连接多种不同的数据库,从而可使用标准的SQL语言来存取数据库中的数据,不必再为每一种数据库系统编写不同的Java代码。本次毕业应用了JDBC访问SQL Server 2005 数据库,以完成必要的功能和要求。2.2.2.4 AWT组件AWT 是Abstract Window Toolkit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。本次毕业设计中用Java提供的这个工具包

36、对服务器和客户端进行GUI开发。第三章 系统分析与设计3.1 系统分析3.1.1 系统可行性分析经济可行性:由于本系统的主要背景是毕业设计,不考虑到直接的经济效益和其后的商业发展,而只在于注重自身水平和能力的提高。所以,只要有一台能运行Java软件的电脑即可,而不用考虑到经济问题。技术可行性:本系统的开发是利用 SQL Server 2005作为本系统的后台数据库的,它是一个支持多用户的新型数据库,适用于中小规模的数据量需求。使用Java作为系统开发的语言,它提供完善的控制语句、类与对象的支持与丰富的数据类型,给开发高性能系统提供了保障。运行可行性:本系统为一个小型的局域网聊天系统,所耗费的资

37、源比较少,只要安装了运行该程序所必要的软件后,就目前的电脑,都是能够运行的。因此,本系统在运行上是完全可行的。综上所述,本系统的设计与开发在经济上、软件上和硬件设备上的条件都是满足的。因此可以得出结论,本系统的开发是可行的。3.1.2 系统功能需求既然该课题的可行性是已经确定,那么我们就可以开始分析其具体的功能需求。聊天软件无非就是要实现聊天的功能,那么其最根本的需求就是实现一个聊天的功能。本次毕业设计的聊天软件所用到的是C/S模式,即需要一个服务器和一个客户端项目,最后两个项目完成通信过程。具体的功能我用Visio图演示出来,如图3-1,图3-1 局域网聊天系统功能示意图3.1.3 系统实现

38、原理聊天系统的设计跟一般的设计有着许多不同的地方,一般来说,设计所考虑的因素包括大量的界面美化以与动态效果等,而聊天室只要能提供实现用户之间即时性的聊天通信即可,但也要做一定美化效果,不然,当用户一看着聊天软件就没了聊天的心情,那就太糟糕了。综合以上因素,我对本次毕业设计所要做的的工作做了以下的总结:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。服务器与客户端连接和传递数据具体实现的原理如下图3-2所示:图3-

39、2服务器与客户端实现数据交互通信原理图3.1.4 各个模块功能详解3.1.4.1 服务器端结构服务器的工作主要是负责对客户端请求的不断监听,它一直处于拥塞状态,直到有客户端发出连接请求为止。当服务器接收到客户端的登陆请求并验证用户名密码通过后,用户成功进入聊天室,服务器又处于拥塞状态,也就是进入了对客户端(发送信息,离线)的监听状态。服务器功能具体的实现方式如下图3-3所示,图3-3 服务器工作模式图示开启服务器时会进入服务器控制主界面,上面标明了服务器的IP、端口号等重要信息,管理者可以点击开启按钮启动服务器。然后,服务器就开始工作了,服务器会一直处于拥塞状态,直到接收到Socket连接请求

40、。然后服务器便会执行相应线程里面相应的操作流程,比如用户登陆、用户注册、用户聊天信息转发等等。3.1.4.2 客户端结构客户端分为登陆(Login),注册(Register)和聊天主界面(ChatRoom)三大模块,登陆主要是客户端向服务器发出登陆用户名和密码,请求到服务器的连接。注册是对用户开放注册功能,从而能让注册过的用户进入聊天室。聊天主界面就是我们的聊天室了,这里实现了局域网聊天的功能,包括点对点、点对多、多对多的聊天形式。客户端工作模式如下图3-4所示,图3-4 客户端工作模式图示首先我们会启动客户端,进入类似 登陆的登陆界面Login,上面有登陆用户名和密码输入框和登陆按钮,如果用

41、户输入正确的用户名和密码就会直接进入ChatRoom,如果此时有其他在线用户,用户就可以与他们进行即时聊天了。除了登陆,你还可以进行注册,点击注册按钮就会响应出Register界面,在你填写完整了注册信息后,点击确定,服务器会查询数据库做出判断并返回结果,如果服务器返回了注册成功的信息,用户便可以点击返回进行以上登陆操作。3.2 系统设计3.2.1 设计原则考虑到系统的可重用性和易维护性,需要将本系统的网络底层通信和应用系统分开,做到结构分明、各功能模块清晰。基于可重用的网络通信底层,可以实现其他各种实时性较高的应用系统。本系统在架构设计上将分成3个层次,如下图3-5所示,图3-5 聊天系统设

42、计层次模型图本系统最底层的是Socket通信层,负责将客户端与服务器之间连接起来,并建立I/O通道,实现客户端与服务器的数据传输。它通过接口层和最上面的应用层保持即时性的数据传递。用户登陆聊天时,将实现统一的用户登陆验证机制。Socket底层设计分为两大部分:协议设计和连接处理。协议设计就是规定服务器的IP和默认的端口号(PORT),服务器在该IP和端口号监听客户端的连接请求。用多线程的技术处理客户端的连接请求,一旦有客户端发起连接请求,服务器便进入到与客户端的连接线程中开始工作,直到完成所有操作。3.2.2 架构设计本系统中,服务器端设计两个线程,一个用来处理客户端连接请求的监听线程,一旦监

43、听到Socket连接请求,服务器便进入Connection线程工作,处理客户端相应请求的操作,比如登陆、注册、发送消息、退出等操作。两个线程之间分工明确一个负责监听请求,一个负责处理请求,多线程处理,分工明确。相应的客户端的设计要比服务器简单,Login类负责实现登陆,Register类负责实现用户注册,ChatRoom类实现用户的聊天功能,其中ChatRoom单独用一个线程来处理其具体的操作。3.2.3 功能设计局域网聊天系统以局域网的用户为实用对象,该聊天系统主要由服务器端和客户端两部分组成,其功能图亦如图3-1所示。3.2.4 数据库设计由于本局域网聊天系统主要是以提供聊天服务为主要目标

44、,所以所设计的数据库表只有简单的两,一用来存储用户信息,一用来存储用户的聊天信息,如下图3-5,3-6所示,图3-5 用户信息表用户信息表主要包括了用户名、密码、年龄、性别、5个数据,分别用来存储用户的用户名、密码、年龄、性别、。图3-6 用户聊天信息表用户聊天信息表主要用来存储用户的聊天信息,包括聊天信息的id号,聊天具体信息,聊天容的时间。第四章 系统的实现4.1 服务器的设计与实现4.1.1 服务器工作流程图服务器的主要工作室配置服务器并且启动服务器,服务器启动后对用户进行管理,包括在线用户管理,踢出违规用户,记录用户聊天信息等。其工作流程图如下4-1所示,图4-1 服务器工作流程4.1

45、.2 服务器主界面服务器主要是实现服务器的启动,然后就开始监听客户端的连接请求,处理客户端的各种应用操作。其主界面如下图4-2,4-3所示,图4-2 服务器主界面图4-3 服务器用户管理主界面4.1.3 服务器的开启点击启动服务器按钮,便可以启动服务器,服务器开始提供服务。如下图4-4所示,图4-4 服务器启动后服务器管理主界面4.1.4 服务器的关闭点击以上图例所示“关闭服务器”按钮,服务器便可退出服务。一旦服务器关闭了服务,那么客户端会知道服务器已经停止了服务,并且弹出“无法连接到服务器”的对话框,客户端也会停止工作。4.1.5 服务器管理用户现在,有一个用户上线了,服务器刷新在线用户列表

46、和在线用户数,同时更新服务器日志,如下图4-5,4-6所示,图4-5 有一个用户上线了(服务器管理界面)图4-6 有一个用户上线了(用户信息管理界面)现在,又有一个用户上线了,服务器刷新在线用户列表和在下人数,同时更新服务器日志,如下图4-7,4-8所示,图4-7 又一个用户上线了(服务器管理界面)图4-8 又一个用户上线了(用户信息管理界面)服务器监听客户端,记录客户端聊天信息,如下图4-9所示,图4-9 服务器用户信息管理界面服务器向所有用户发送系统消息,如图4-10 组图所示,图4-10 服务器向所有用户发送消息服务器踢出非法聊天用户,如下图 4-11组图所示,图4-11 服务器踢出非法

47、聊天用户现在,有一个用户下线了,服务器刷新在线用户列表和在线人数,同时更新服务器日志,如下图4-12所示,图4-12 有一个用户下线了4.2 客户端的设计与实现4.2.1 客户端工作流程图客户端启动会首先进入登陆(Login)界面,登陆界面上不但有登陆按钮,还有注册按钮。如果输入正确的用户名和密码,就会登录到聊天室ChatRoom主界面。而如果点击注册按钮的话,就会直接跳到注册界面,其工作流程图下图4-13所示,图4-13 客户端工作流程图4.2.2 客户端登陆主界面登陆客户端首先进入的是登陆界面,如下图4-14所示,图4-14 用户登陆界面4.2.3 客户端注册主界面用户点击登陆主界面上的注

48、册按钮,会自动跳转到注册主界面,如图4-15所示,图4-15 注册主界面此时用户可以进行账号注册,如下图4-16组图所示图4-16 用户注册用户注册时,首先经过客户端判定是否输入为空,经过客户端的判断后才会将注册信息发往服务器,服务器判断该用户名是否已经被注册,然后返回成功或者失败的结果。部分代码如下,客户端判断:/用户注册SuppressWarnings(deprecation)privatevoid registNewUser() / TODO Auto-generated method stub/从输入框接收用户注册详细信息并赋给封装的注册用户信息类对象RegistUserInfo re

49、gistUserInfo = new RegistUserInfo();registUserInfo.userName = txtUserName.getText();registUserInfo.userPassword = txtUserPassword.getText();registUserInfo.age = txtAge.getText();registUserInfo.sex = rbtnMale.isSelected()?男:女;/默认选择男,如果为真就选择男,假就选择女registUserInfo.email = txtEmail.getText();/* * 对得到的注册用

50、户信息进行验证 */用户名有无验证if(registUserInfo.userName.length()=0)JOptionPane.showMessageDialog(null, 用户名不能为空!);return;/密码有无验证if(registUserInfo.userPassword.length()=0)JOptionPane.showMessageDialog(null, 密码不能为空!);return;/两次密码输入是否一样验证if(!registUserInfo.userPassword.equals(txtPwdConfirm.getText()JOptionPane.show

51、ConfirmDialog(null, 两次输入密码不一致!);return;/年龄有无验证if(registUserInfo.age.length()=0)JOptionPane.showMessageDialog(null, 年龄不能为空 !);return;/* * 输入容合法性验证 */年龄合法性验证int age = Integer.parseInt(txtAge.getText();if(age150)JOptionPane.showMessageDialog(null, 输入年龄无效!);return;/合法性验证int flag = 0;for(int i = 0;itxtEm

52、ail.getText().length();i+)if(txtEmail.getText().charAt(i)=)flag+;if(flag!=1)JOptionPane.showMessageDialog(null, 电子格式不正确!请重新输入!);return;服务器判断:/* 用户注册处理*/privatevoid userRegist() / TODO Auto-generated method stubtry /用户重名判断RegistUserInfo regist = (RegistUserInfo) obj;String sql = select * from userInf

53、o where userName=+regist.userName+;SqlConn sq = new SqlConn();Statement st = sq.con.createStatement();ResultSet rs = st.executeQuery(sql);boolean flag = false;while(rs.next()flag = true;if(flag=true)toClientStream.println(注册名重复,请重新输入!);return;elsetoClientStream.println(regist.userName+注册成功!);/ sql =

54、 insert into userInfo(userName,userPwd,sex,age,email) values( +regist.userName+,+regist.userPassword+,+regist.sex+,+regist.age+,+regist.email+);st.executeQuery(sql);/执行数据库语句return; catch (Exception e) / TODO: handle exception4.2.4 客户端聊天主界面用户如果输入了正确的用户名和密码后,会自动跳转到聊天室,接下来就可以和局域网的其他用户进行实时的聊天了,如下图4-17所示

55、,图4-17 客户端聊天主界面4.2.5 客户端之间聊天客户端进行实时的聊天,如下图4-18,4-19,4-20,4-21,4-22所示,图4-18 用户对指定用户说话图4-19 所有人能看见聊天容图4-20 用户对指定用户说悄悄话图4-21 其他用户无法看见图4-22 改变聊天容的字体风格4.2.6 用户下线有一个用户退出了聊天室,所有用户都能看见该用户下线的信息,并且刷新在线用户列表和在线人数,如下组图4-23所示,图4-23 用户下线,向所有用户广播下线消息在某些时候有可能服务器会停止服务,这个时候,用户就会在短时间得知服务器停止了工作的消息,并弹出“无法连接到服务器”的对话框,客户端这

56、个时候就会停止工作,直到服务器重新开启。4.3 系统功能特点与改进本次毕业设计所设计的局域网聊天系统,基本上实现了局域网通信功能。实现的相应功能主要有以下部分,服务器端1、 服务器能够监听客户端的所有操作,并作出相应的处理;2、 服务器端可以发送系统消息;3、 服务器可以管理用户和用户消息;4、 服务器可以踢出非法聊天的用户;5、 服务器日志记录了客户端登陆、下线的所有信息;6、 服务器将用户聊天信息记录在数据库中;7、 服务器正常关闭。客户端1、 客户端能够通过正确的账号和密码进行登录2、 客户端能够实现在线注册;3、 客户端实现了点对点、点对多、多对多的聊天模式;4、 客户端能够改变聊天字

57、体风格;5、 客户端能够选择切换私聊或者群聊;6、 客户端右上角能显示当前的时间;7、 客户端能够保存聊天信息到本地txt文件;8、 客户端能够读取聊天历史记录;9、 客户端退出并向所有用户广播退出消息;10、 客户端正常退出。综上所述,本次毕业设计基本上实现了局域网聊天室所需要的大部分功能,但是还有很多地方可以改进或者添加新的功能,比如屏蔽非法聊天容、发送聊天图标表情等。第五章 结论本次毕业设计主要应用了Java下的Socket编程实现了一个局域网的通信软件,基本满足了系统结构化、界面友好、速度快、占用资源少、稳定等特点。所以,总体上来说,该系统还是比较成功的。在当今网络遍布的世界,一个简单

58、高效的局域网通信工具是非常有实用价值和研究价值的。在这次的毕业设计中,本人应用了Java编程语言在Eclipse平台上开发了一个基于TCP/IP的局域网即时通讯软件,并对TCP和UDP通信进行了详细的比较设计,彻底明白了TCP与UDP通信的原理以与他们之间的区别。并且在这一重要而复杂的领域进行了相关的实践开发,不管是对自我的自学能力、研究能力,还是实践动手能力、资料查阅能力,都起到了非常大的促进作用和推动作用。所以,我必定会认真总结这次毕业设计的经验,以与学习到的知识,来更加的充实自己的阅历和完善自己的知识覆盖面。本次毕业设计所设计开发的系统着重研究并实现了Socket网络通讯应用的部分。根据

59、实现的情况来看,本次毕业设计最后完成的局域网通讯系统具有较为友好的聊天界面效果和服务器后台监听效果,以与流畅的网络通信效果。生成的聊天室可以达到基本的局域网聊天要求,具有较高的学习价值和深入的研究价值。还可以以此为拓展,更深入的学习和研究Socket网络通信以与其他的网络通信模式。致 近两个月的的忙碌,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的缺乏,难免有许多考虑不周的地方,如果没有指导老师的督促指导,以与其他同学的支持,想要完成这个设计是非常困难的。在这里,再次感我的毕业设计老师以与给予我极大帮助的同学们,感他们的帮助和支持。通过本次毕业设计,本人对Java的认识水平有了

60、极大的提高。因为,在大学期间,学习Java的时间其实很少,而且也不够深入。通过这次毕业设计,本人在Java Socket通信机制的学习上受益匪浅,明白了Socket通信的基本原理,并能够用Java Socket实现简单的局域网通信系统。同时发现自己在理论研究和实际工作能力等方面都得到了很大提高。在整个设计过程中,在老师的指导和许多同学的共同帮助下,与时总结成果,这些无疑会对我今后的工作和学习带来很大的帮助。进入社会后,我定会更加努力,在以后的生活中继续提高自己,为自己创造更多的机会,创造美好的明天!参考文献1 Elliotte Rusty Harold 著,朱涛江、林剑译.Java网络编程(第

61、三版).中国电力.2012.62 胡伏湘、雷军环.Java程序设计实用教程(第二版).清华大学.2009.83 王家林.Android4.0网络编程详解.电子工业.2012.14 王珊、萨师煊.数据库系统概论.高等教育. 2011.55 王意洁.面向对象的数据库技术.电子工业.2003.36 岳昆.数据库技术:设计与应用实例. 清华大学.20077 余金山、林慧.SQL Server 2000/2005 数据库开发实例入门与提高.:电子工业.20058 结城浩 著,博硕文化 译.Java多线程设计模式.中国铁道.2005.49 建成、郝筱松.Java语言与面向对象程序设计.交通大学出版社.2004.1010 汪晓平、俞俊、功.精通Java网络编程.清华大学.2005.911 闫迎利.Java网络编程大讲堂.清华大学.2011.112 寇晓蕤、罗军

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!