基于JAVA局域网聊天软件毕业设计论文.docx

上传人:b****4 文档编号:26805657 上传时间:2023-06-22 格式:DOCX 页数:37 大小:564.62KB
下载 相关 举报
基于JAVA局域网聊天软件毕业设计论文.docx_第1页
第1页 / 共37页
基于JAVA局域网聊天软件毕业设计论文.docx_第2页
第2页 / 共37页
基于JAVA局域网聊天软件毕业设计论文.docx_第3页
第3页 / 共37页
基于JAVA局域网聊天软件毕业设计论文.docx_第4页
第4页 / 共37页
基于JAVA局域网聊天软件毕业设计论文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于JAVA局域网聊天软件毕业设计论文.docx

《基于JAVA局域网聊天软件毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于JAVA局域网聊天软件毕业设计论文.docx(37页珍藏版)》请在冰豆网上搜索。

基于JAVA局域网聊天软件毕业设计论文.docx

基于JAVA局域网聊天软件毕业设计论文

 

本科毕业论文(毕业设计)

题目:

局域网聊天软件

 

系院:

学生姓名:

学号:

专业:

年级:

完成日期:

指导教师:

 

摘要

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。

一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQLServer2000完成并通过JDBC-ODBC桥访问数据库。

本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。

系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。

使用JAVA语言编写,开发工具采用Eclipse。

服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。

大大增强了程序对服务器资源的利用。

聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

 

关键字:

多线程;客户机/服务器;JAVA;Socket;Eclipse;TCP/IP

Abstract

asthenetworkbecomemoreandmoredeveloped,peoplebecomemoreandmoreleantothenetwork,andcannotleavewithoutit.Thiscausedthechatmaterialsbecomemorenumerous,astheoverseasICQsystem,theOICQsystemthatinventedbyTencentCo.,andsoon.SowecreateanetworkchatmediumjustliketheQQ.Javanetworkprogrammingbasedonthepower,theuseofJavadesignedtopreparegraduatesachatsystem.

Ingeneral,themajorityofthechattoolforclientandserverprograminadditiontoserver-sidestorageofcustomerdataforthedatabase,thesystemusesaclient/serverarchitecturemodeltheadoptionofJavaprovidedSocketclassconnectclientandserverandbetweentheclientandservercommunicatewitheachother,asthechatistoprovidepoint-to-multipointandmulti-threadedJavafunctiontobecompletedbyusingmulti-threadedchatandmorepoint-to-multipoint,databasemanagementsystemwithSQLServer2000thecompletionandadoptionofJDBC-ODBCBridgeaccessthedatabase.

ThesystembuiltontheJAVAplatform,thesystemdesignusingobject-orientedtechnologyandobject-orienteddesignprinciples.SystemusestheC/Sstructure,clientandclient-sideandserver-sideclientandsendmessagesthroughSocket.TheuseofJAVAlanguage,developmenttoolsusingEclipse.DesignandImplementationofserver-sideprocess,theuseofmulti-threadingtechnology,whichcanprocessinasinglerunatthesametimeanumberofdifferentthreads,theimplementationofdifferenttasks.Proceduresgreatlyenhancedtheuseofserverresources.

Chatsystemwillallowpeopletocompletechattomorefriends,andthesystemcanadd,deletesomebody,candealwithnewuserregistration,sendmessages,receivemessagesandsoon.

 

Keywords:

Multithreading;Client/Server;JAVA;Socket;Eclipse;TCP/IP

目录

1绪论1

1.1国内外聊天系统的研究现状1

1.2Java语言2

1.2.1Java的发展历史2

1.2.2Java的特点3

1.2.3Java与Internet4

1.3Socket编程4

1.3.1关于TCP/IP协议4

1.3.2服务器和客户机5

1.4本文内容安排6

2需求分析7

2.1可行性研究7

2.1.1可行性分析7

2.1.2系统功能需求7

2.1.3系统性能需求8

2.1.4系统运行需求8

2.2数据流图8

2.2.1顶层数据流图8

2.2.2一层数据流图9

2.2.3二层数据流图9

3概要设计11

3.1系统实现原理11

3.2系统实现层次图:

12

3.3各模块详细功能12

3.3.2服务器端结构12

3.3.2客户端结构14

4详细设计19

4.1系统流程图19

4.1.1系统总体流程图19

4.1.2系统客户端流程图20

4.2编写服务器端程序20

4.2.1问题陈述20

4.2.2解决方案21

4.3客户端程序编写28

4.3.3聊天室38

参考文献46

致谢45

1绪论

1.1国内外聊天系统的研究现状

目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。

本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。

腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。

腾讯的成功与其对QQ的不断创新和完善是分不开的。

参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。

可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。

并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。

其模型如图1-1

图1-1腾讯QQ服务器-客户端模型1

与腾讯QQ不同,微软的MSNMessenger只使用了TCP作为传输层通

信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。

 

其模型如图1-2

图1-2MSN服务器-客户端模型2

腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。

而MSNMessenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。

综合腾讯QQ和微软MSNMessenger的特点,我打算在我的系统中尝试建立其类似腾讯QQ的服务器-客户端模型,但以单服务器提供服务。

1.2Java语言

1.2.1Java的发展历史

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

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

这个计划的负责任是JamesGosling。

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

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

尤其在内存管理方面,c++采用直接地址访问方式。

需要程序员记录并管理内存资源。

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

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

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

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

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

1.2.2Java的特点

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

1.简单性

Java语言简单高校,基本Java系统(编译器和解释器)所占空间不足250KB由于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++。

1.2.3Java与Internet

Java语言取得成功的领域之一就是网络(其他语言)数页代码---->(Java)一条语句

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

ftp,http,smtp,pop3,telnet,nntp等。

  IP地址:

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

在Java中,有一个用来存储internet地址的类叫InterAddress.

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

URL,Socket,Datagram.

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

2、Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.

3、Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上

1.3Socket编程

1.3.1关于TCP/IP协议

TCP协议是网络通信的基石,对此,Java专门提供了Socket的类库,在其中抽象出TCP协议通信的常用方法:

TCP协议与三次握手:

在讲述TCP协议流程前,先来声明两个重要的概念:

(1)客户端,首先发送TCP请求的是客户端,客户端一般是服务(比如数据查询服务)的请求者。

(2)服务器,在接收到客户端的请求后(确保同客户端的通信信道建立)服务器会向客户端提供服务。

服务器一般是服务的执行者,会向客户端返回服务执行的结果。

为了实现客户端同服务器端的通信,客户端首先发送一个“SYN”数据包。

如果服务器收到SYN标记,它将发回一个“SYN+ACK”数据包。

接着,客户端为了表示收到了这个SYN+ACK信息,会向服务器发送一个最终确认信息(ACK包)。

这种SYN,SYN+ACK,ACK的步骤被称为TCP连接建立时的“三次握手”,在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。

这种通信模式也叫客户端/服务器(C/S)模式。

主机A主机B

SYN=1,SEQ=

 

ACK=1,SYN=1,SEQ=

aaaaaaaaaa

 

图1-3三次握手协议

由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。

1.3.2服务器和客户机

网络最基本的目的就是让两台机器连接到一起,并相互“交谈”或者“沟通”。

一旦两台机器都发现了对方,就可以展开一次令人愉快的双向对话。

但它们怎样才能“发现”对方呢?

这就像在游乐园里那样:

一台机器不得不停留在一个地方,侦听其他机器说:

“嘿,你在哪里呢?

“停留在一个地方”的机器叫做“服务器”(Server);到处“找人”的机器则叫做“客户机”(Client)或者“客户”。

它们之间的区别只有在客户机试图同服务器连接的时候才显得非常明显。

一旦连通,就变成了一种双向通信,谁来扮演服务器或者客户机便显得不那么重要了。

所以服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。

而客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。

一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO数据流对象。

从这时开始,我们可以象读写一个普通的文件那样对待连接。

所以一旦建好连接,我们只需使用自己熟悉的IO命令即可。

这正是Java联网最方便的一个地方。

图1-4服务器和客户机的连接

1.4本文内容安排

本论文内容安排如下:

第二章为聊天系统的需求分析,主要介绍系统的可行性研究,需求分析流程图等。

第三章为概要设计,分模块介绍系统的具体实现过程。

第四章为详细设计。

2需求分析

2.1.1可行性分析

经济可行性:

由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行Java软件的电脑便可,所以不用考虑到经济问题。

技术可行性:

本系统的开发利用MicrosoftSQLServer2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。

学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。

使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。

运行可行性:

本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。

综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。

2.1.2系统功能需求

本系统主要通过客户端,服务器端来体现聊天系统的基本功能。

(1)服务器端

1.处理用户注册

2.处理用户登录

3.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容

4.处理用户得到信息

5.处理用户退出

8.服务器踢人。

9.保存服务器日志。

10.保存用户聊天信息。

(2)客户端

1.用户注册界面及结果

2.用户登录界面及结果

3.用户发送信息界面及结果

4.用户得到信息界面及结果

5.用户退出界面及结果

2.1.3系统性能需求

实用性:

为局域网聊天提供方便,有效进行作业管理。

操作简单:

本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。

技术先进:

产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。

使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。

安装使用简便:

服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。

适应性:

应该能广泛应用于不同类型的企事业单位。

系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。

代码可读性好:

文中的代码将尽可能简洁,易懂。

 

2.1.4系统运行需求

运行环境:

Windows9x、2000、xp、2003,Linux

必要环境:

JDK1.5以上

硬件环境:

CPU400MHz以上,内存64MB以上

2.2数据流图

2.2.1顶层数据流图

图2-1顶层数据流图

 

2.2.2一层数据流图

 

.

图2-2一层数据流图

2.2.3二层数据流图

图2-3系统二层数据流图

3概要设计

3.1系统实现原理

聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。

因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:

在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。

因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

图3-1系统实现原理图

3.2系统实现层次图:

图3-2系统实现层次图

3.3各模块详细功能

3.3.1服务器端结构

图3-3服务器端结构图

ServeFrame.java为服务器端程序界面,负责为服务器的启动提供界面服务。

AppServer.java为服务器端启动界面,负责监听服务器的状态,在线人数,最多在线人数,服务器名称,访问协议,服务器IP,服务器端口以及用户信息的管理,日志的保存。

Connection.java是连接服务器和客户端的桥梁,主要负责将客户端的信息传送给服务器,并将服务器端的信息反馈给客户端,即所谓的“三次握手”。

也是Socket编程的重要部分。

WordFilter.java负责将聊天过程中不合法的话语文件等过滤掉,返回合法内容。

3.3.2客户端结构

图3-4客户端结构图

ChatClient.java为客户端程序启动类,负责客户端的启动和退出。

Login.java为客户端程序登录界面,负责用户帐号信息的验证与反馈。

Register.java为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。

ChatRoom.java为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java亲密合作。

Windowclose为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。

Clock.java为客户端程序的一个小程序,实现的一个石英钟功能。

 

4详细设计

4.1系统流程图

4.1.1系统总体流程图

图4-1系统总体流程图

4.1.2系统客户端流程图

图4-2客户端流程图

4.2编写服务器端程序

4.2.1问题陈述

1.接受用户注册信息并保存在一个基于文件的对象型数据库。

2.能够允许注册过的用户登录聊天界面并可以聊天。

3.能够接受私聊信息并发送给特定的用户。

4.服务器运行在自定义的端口上1001.

5.服务器监控用户列表和用户聊天信息(除私聊外)。

6.服务器踢人,发送通知。

7.服务器保存日志。

4.2.2解决方案

4.2.2.1后台数据库设计

基于服务器跨平台运行的构想,服务器的后台数据库使用了SQLServer2000。

(1)login表:

Login表

(2)register表

register表

此表主要包含了用户帐户基本信息。

聊天系统采用用户名作为用户帐号,并给每个用户生成一个唯一ID来做系统内部的用户标识。

4.2.2.2用户注册

1.去数据库读数据

首先创建一个File文件类,载入“user.txt”,再用对象输入流ObjectInputStream将用户信息导入到系统中。

2.客户端请求注册

客户端通过Register.java请求注册,填写注册信息,并验证密码是否符合规定,是否两次输入一致,如不一致会提示重新输入,最后将请求信息发送给服务器端。

intflag=0;//是否重名判断标志

Register_CustomerclientMessage=(Register_Customer)obj;

FilefList=newFile("user.txt");

if(fList.length()!

=0)//判断是否是第一个注册用户

{

ObjectInputStreamobjInput=newObjectInputStream(

newFileInputStream(fList));

vList=(Vector)objInput.readObject();

//判断是否有重名

for(inti=0;i

Register_Customerreg=(Reg

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1