局域网下的java聊天软件大学论文.docx
- 文档编号:26273489
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:27
- 大小:496.80KB
局域网下的java聊天软件大学论文.docx
《局域网下的java聊天软件大学论文.docx》由会员分享,可在线阅读,更多相关《局域网下的java聊天软件大学论文.docx(27页珍藏版)》请在冰豆网上搜索。
局域网下的java聊天软件大学论文
河北农业大学信息学院
本科毕业论文
题目:
局域网下的java聊天软件
摘要
随着互联网的迅猛的发展,网络逐渐成了人们获取信息的主要途径。
做为传统的信息交流工具e-mail,因为其发送和接受消息时间相对滞后的缘故,不能满足人们迅速获取信息的要求。
即时通讯应运而生,为大众提供了一种崭新的综合的信息交流平台。
即时通讯不同于传统的通讯工具e-mail,在于它的交流是实时的,使得人们交流更加便捷和快速,满足了人们迅速获取信息的需求,以深受大众的喜爱,有着很好的发展前景。
其中聊天软件就是即时通讯的具体实现。
本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。
系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。
使用JAVA语言编写,开发工具采用Eclipse。
服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。
大大增强了程序对服务器资源的利用。
关键字:
多线程;客户机/服务器;java;socket;eclipse
Abstract
WiththerapiddevelopmentofInternet,thenetworkgraduallybecomesthemainwayforpeopletoobtaininformation.Asthetraditionalinformationcommunicationtoole-mail,becauseoftherelativelagofthesendingandreceivingmessagesoftimereasons,cannotsatisfypeoplequickaccesstoinformationrequirements.Imemergeasthetimesrequire,providesanewintegratedinformationexchangeplatformforthepublic.Unliketraditionalinstantmessagingcommunicationtoole-mail,theexchangeisthatitisareal-time,makespeoplecommunicatemoreconvenientandfast,satisfyingthepeoplequickaccesstoinformationneeds,solovedbythepublic,hasagooddevelopmentforeground.Concreterealizationisinstantmessagingchatsoftware.
ThesystembuiltontheJAVAplatform,thesystemdesignusingobject-orientedtechnologyandobject-orienteddesignprinciples.SystemusestheC/Sstructure,clientandclient-sideandserver-sideclientandsendmessagesthroughSocket.TheuseofJAVAlanguage,developmenttoolsusingEclipse.DesignandImplementationofserver-sideprocess,theuseofmulti-threadingtechnology,whichcanprocessinasinglerunatthesametimeanumberofdifferentthreads,theimplementationofdifferenttasks.Proceduresgreatlyenhancedtheuseofserverresources.
Keywords:
multiplethreads;client/server;Java;socket;Eclipse.
目录
1绪论3
1.1聊天软件开发背景3
1.2Java语言3
1.2.1Java的发展历史3
1.2.2Java的特点4
1.2.3Java与Internet5
1.3Socket编程6
1.3.1关于TCP/IP协议6
1.3.2服务器和客户机6
2需求分析7
2.1可行性分析7
2.2系统功能需求7
2.3系统性能需求7
3概要设计8
3.1运行环境8
3.2软件功能框架图8
3.2.1服务端功能框架图8
3.2.2客户端功能框架图8
4详细设计9
4.1流程图9
4.1.1服务端9
4.1.2客户端10
4.2编写服务器端程序10
4.2.1通讯数据包说明(格式说明,包类型说明)10
4.2.2问题陈述11
4.2.3解决方案11
4.3编写客户端程序13
4.3.1通讯数据包说明(格式说明,包类型说明)13
4.3.2问题陈述13
4.3.3解决方案13
5系统实现17
5.1服务端17
5.1.1服务器启动配置17
5.1.2服务端主窗口17
5.2客户端18
5.2.1客户端登陆18
5.2.2客户端配置19
5.2.3客户端聊天主窗口19
致谢21
参考文献22
1绪论
1.1聊天软件开发背景
Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。
作为Internet上一种先进的,易于被人们所接受的信息检索手段,WorldWideWeb(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。
据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。
近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。
使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。
各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。
过去的种种陈旧的联系方式,已经不能满足现代生活的需要。
网上聊天系统作为一种方便消费者与人们之间联系的实用系统便应运而生。
网上聊天系统是为人们进行交流和联系提供的一个平台。
通过提供完善的网上聊天系统的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的
局域网聊天工具是一种面向企业局域网终端使用者的网络沟通工具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。
目前,中国市场上的企业级即时通信工具主要包括:
通软联合的GoCom、腾讯公司的RTX、IBM的LotusSametime等,免费版的有网络信使,传我,汇海集团的汇讯WiseUC等。
局域网聊天软件不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。
是一种终端连往即时通讯网络的服务。
局域网通讯不同于e-mail在于它的交谈是即时的。
大部分的即时通讯服务提供了状态信息的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。
局域网聊天工具,是以企业内部办公,建立员工交流平台为基础,通过系统整合、边缘功能,为企业提供一整套的即时沟通和实时协作的解决方案。
由于企业对信息类软件的需求还在“探索”与“尝试”阶段,所以会导致很多系统不能“互通”,这也成了局域网聊天软件的一个使命。
当信息软件被广泛使用之后,“互通”接口具备否,将被作为软件被选用的重要条件。
1.2Java语言
1.2.1Java的发展历史
在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。
但事实上Java早在上个世纪90年代初就开始酝酿了。
自1995年到1998年是Java的幼年时期,Sun在Green项目经过了几年的研究,终于在1995年5月23日在SunWorld'95上正式发布Java和HotJava浏览器但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。
因此,sun在之后的几年中推出了推出JDK多个版本。
虽然在1998年之前,Java被众多的软件企业所采用,但由于当时硬件环境和JVM的技术原因,它的应用却很有限。
当时Java主要只使用在前端的Applet以及一些移动设备中。
然而这并不等于Java的应用只限于这些领域。
在1998年是Java开始迅猛发展的一年。
在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME。
标志着Java已经吹响了向企业、桌面和移动3个领域进军的号角。
自1998年到2004年是Java的青少年时期,在1998年12月4日。
Sun发布了Java的历史上最重要的一个JDK版本:
JDK1.2。
这个版本标志着Java已经进入Java2时代。
这个时期也是Java飞速发展的时期。
在Java2时代Sun对Java进行了很多革命性的变化,而这些革命性的变化一直沿用到现在,对Java的发展形成了深远的影响。
2004年至今是Java的壮年时期。
在2004年10月,Sun发布了我们期待已久的版本:
JDK1.5,同时,Sun将JDK1.5改名为J2SE5.0。
和JDK1.4不同,JDK1.4的主题是性能,而J2SE5.0的主题是易用。
Sun不仅为J2SE5.0增加了诸如泛型、增强的for语句、可变数目参数、注释(Annotations)、自动拆箱(unboxing)和装箱等功能,同时,也更新的企业级规范,如通过注释等新特性改善了EJB的复杂性,并推出了EJB3.0规范。
在Java发展的十几年的时间里,经历了无数的风风雨雨。
现在Java已经成为一种相当成熟的语言了。
在这10年的发展中,Java平台吸引了数百万的开发者,在网络计算遍及全球的今天,更是有20亿台设备使用了Java技术。
1.2.2Java的特点
Java语言有下面一些特点:
简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。
1.简单性
Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。
Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。
2.面向对象
Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。
对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
3.分布性
Java是面向网络的语言。
通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。
4.鲁棒性
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。
它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。
通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。
另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
5.安全性
用于网络、分布环境下的Java必须要防止病毒的入侵。
Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用"特洛伊"木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
6.体系结构中立
Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。
这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
7.可移植性
与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。
同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。
另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。
8.解释执行
Java解释器直接对Java字节码进行解释执行。
字节码本身携带了许多编译时信息,使得连接过程更加简单。
9.高性能
和其它解释执行的语言如BASIC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
10.多线程
多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。
通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
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协议
TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
通俗而言:
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP是给因特网的每一台电脑规定一个地址。
TCP协议是网络通信的基石,对此,Java专门提供了Socket的类库,在其中抽象出TCP协议通信的常用方法。
1.3.2服务器和客户机
客户机又称为用户工作站,是用户与网络打交道的设备,一般由微机担任,每一个客户机都运行在它自己的、并为服务器所认可的操作系统环境中。
服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。
运行以上软件的计算机或计算机系统也被称为服务器。
服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。
而客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。
一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO数据流对象。
从这时开始,我们可以象读写一个普通的文件那样对待连接。
所以一旦建好连接,我们只需使用自己熟悉的IO命令即可。
这正是Java联网最方便的一个地方。
2需求分析
2.1可行性分析
(1)经济可行性:
本系统无需数据库服务,由于聊天室使用人数有限,无数据库完全可以应付,所以成本就无需考虑了。
(2)操作可行性:
只要一台以上的计算机连在同一个局域网上,本系统就可以使用了,所以操作简单,不存在问题。
(3)技术可行性:
本系统采用java语言,是基于CS架构的。
开发这个软件需要开发者对socket编程和javaSwing及多线程技术比较熟悉。
由于本人对java应用水平有限,希望不足之处可以得到谅解。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
2.2系统功能需求
本系统主要通过客户端、服务器端来体现聊天系统的基本功能。
(1)服务器端
1.处理用户注册
2.处理用户登录
3.处理用户发送信息,服务器监控聊天内容
4.处理用户得到信息
5.处理用户退出
8.服务器踢人。
9.保存服务器日志。
(2)客户端
1.用户登录界面及结果
2.用户发送信息界面及结果
3.用户得到信息界面及结果
4.用户退出界面及结果
2.3系统性能需求
实用性:
为局域网聊天提供方便,有效进行作业管理。
操作简单:
本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。
安装使用简便:
服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。
适应性:
应该能广泛应用于不同类型的企事业单位。
系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。
3概要设计
3.1运行环境
安装有JRE1.5以上的windows系统(推荐winXP,winVista或win7)
3.2软件功能框架图
3.2.1服务端功能框架图
这个图主要介绍服务端的功能,主要包括测试端口、保存配置、服务器管理、用户管理、日志管理。
如图1所示。
图3-1服务端功能框架图
3.2.2客户端功能框架图
这个图主要介绍了客户端的功能,主要包括设置IP、设置端口、修改密码、发送私聊信息、发送公聊信息、显示公告、显示在线用户。
如图2所示。
图3-2客户端功能框架图
4详细设计
4.1流程图
4.1.1服务端
4.1.1.1服务器登录流程图
当打开服务器登录主窗体时,需要测试端口是否可用,如可用则保存配置文件,若保存成功则进入服务器界面。
如图3所示。
图4-1服务端登录流程图
4.1.1.2服务器管理流程图
当进入服务器界面时,使用者可以开启服务器,监听连接请求,处理用户发送过来的消息,当点击右上角的推出按钮时退出并关闭所有连接。
如图4所示。
图4-2服务器管理流程图
4.1.2客户端
在客户端,用户首先进入登录窗体,如果IP、端口号、用户名、密码都正确,则进入聊天窗口,否则给出相应的提示信息。
进入聊天窗口后可以修改密码、发送聊天信息、显示公告和在线用户列表。
如图5所示。
图4-3客户端流程图
4.2编写服务器端程序
4.2.1通讯数据包说明(格式说明,包类型说明)
格式说明
packagepub;
importjava.io.Serializable;
//封装数据的包,它现了java.io.Serializable接口
publicclassQQPackageimplementsSerializable{
privateStringfrom;//消息发送者
privateStringto;//消息接收者
privatePackTypepackType;//包类型
privateObjectdata;//数据包
}
包类型说明
packagepub;
//包类型
publicenumPackType{
loginApply,//登陆申请
loginSuccess,//登陆成功
loginFail,//登陆失败
privateChat,私聊
publicChat,//群聊
post,//公告
onlineuser,//在线用户列表
enforceDown,//强制下线
stopServer,//停止服务
userOffline,//用户下线
resetPassword,//修改密码
}
4.2.2问题陈述
1.用户注册。
2.能够允许注册过的用户登录聊天界面并可以聊天。
3.能够接受私聊信息并发送给特定的用户。
4.服务器运行在自定义的端口上6000.
5.服务器监控用户列表和用户聊天信息。
6.服务器踢人,发送通知。
7.服务器保存日志。
4.2.3解决方案
4.2.3.1服务器登录配置
Login_JFram这个类是一个服务端登录窗体,在其中要读取config.ini中的配置信息,测试端口是否可用,若可用则创建一个serversocket,并用login_button_listener这个类去监听按钮并作出响应。
4.2.3.2服务端设计
QQ_Server_JFrame是服务器主窗体,其中有三个成员变量分别是Sermanager_JPanel(服务器管理面板)、UserManager_JPanel(用户管理面板)、LogsManager_Panel(日志管理面板)。
在服务器管理面板中,有一个ServerManager_Button_Listener负责监听按钮。
当按下启动服务器按钮时,更改图片,写启动服务日志,并创建一个服务端监听客户连接的线程(Accept_Thread),并启动。
在此线程中会根据用户的状态创建一个用于读取的线程(Server_Read_Thread),它会根据包类型做出不同的操作。
当按下停止服务按钮时,停止服务,更改图片,写停止服务日志,修改用户状态,刷新用户列表,通知用户下线,发stopServer包
当按下强制用户下线按钮时,要判断用户ID,封装强制下线包,关闭强制下线用户的线程、流。
在用户管理面板中,用一个用户管理面板按钮的监听器(UserManager_Button_Listener)完成查询用户,显示在线用户列表的显示,添加新用户,删除用户,修改资料,重设所有密码,重设所选密码的功能。
当按下用户添加按钮和修改资料按钮时创建一个用户信息的对话框,调用UserInfo_JDialog(UsersManager_JPanelusersManager_JPanel,QQ_Server_JFrameqq_Server_JFrame,intkind)方法。
这个方法会判断操作类型,生成一个存放对话框内容的JPanel,初始化编号、密码、注册时间,实例化UserInfo_Button_Listener(添加用户和修改用户对话框的监听器),
当按下查询按钮时,获取用户id和姓名,调用UserDaoImpl(访问数据的方法类)的select
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 java 聊天 软件 大学 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)