版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、论文题目: 基于远程方法调用的聊天室软件设计与实现 目 录摘要Abstract1 开发工具和环境101.1简介101.2开发技术的介绍101.2.1开发语言101.2.2开发技术111.2.3客户端/服务器端体系结构111.24 Java IO简介121.2.5 MySql介绍121.26 TCP/IP131.27TCP/IP主要的三个层面的功能131.3开发及软件测试环境141.3.1软件环境141.3.2开发、测试硬件环境141.4本章小结142需求分析和可行性分析1421需求分析和可行性分析142.11聊天软件的功能需求142.1.2软件运行需求152.2本章小结153UML建模153.
2、1系统的模块用例153.1.1聊天室各个模块儿用例图153.1.2 协作图173.3可行性分析173.3.3 操作可行性183.3.4经济可性183.3.5结论184软件的设计194.1软件概述194.2软件的总体设计与功能194.3服务器端设计与功能。204.3.1服务器端的详细介绍204.3.2客户端程序介绍214.4本章小结215.软件的主要设计实现215.1软件开发环境的搭建215.2软件实现思路225.2.1服务器端设计225.2.2客户端设计255.2.3聊天信息存储315.3本章小结356.软件测试356.1软件测试356.1.1 操作系统测试356.2本章小结36谢辞36基于远
3、程方法调用的聊天室软件设计与实现 摘要:随着经济、文化、经济乃至整个社会的方方面面的高速度发展,社会对计算机技术的需求也越来越大,要求越来高。有远程化的社会需求、对框架结构和服务平台集成化的需求、操作维护迅捷化的需求。于是远程化的方法越来越受到社会的欢迎。 在互联网快速发展的大背景下,计算机逐渐的走进了千家万户,越来越小的体积是的计算机越来越容易携带,远程协助系统的作用得到了体现和发挥,远程聊天越来越受到人们的关注和推崇,远程聊天是人们最为关注的远程应用,远程聊天软件所带来的方便是众所周知的,远程会议,远程沟通等等,因为远程聊天的出现大大减少了这些工作所带来的人力物力的消耗,即能够减轻对资源的
4、消耗,也能保证效率的提高,在各个方面上得到了较好的应用。在Java平台上可以实现对象的传递、平台无关等特征。基于Java RMI技术的远程辅助系统运用的越来越广泛,本次做的设计主要是RMI的远程通讯。RMI(Remote Method Invoke, 远程方法调用)是Java为了方便网络通讯的一种机制。它允许某个Java虚拟机上的类调用另外一个Java虚拟机的类的方法。 这两个Java虚拟机既可以在同一台机器上,也可以在不同机器上。RMI隐藏了具体的网络通讯的细节。 使得“访问远程主机上的对象如同访问本地对象”。使得用户完全不需要考虑具体的网络通讯细节。通过利用远程通讯工作,在现在的生活以及工
5、作中提供了极大的方便,缓解了紧张的交通,降低了环境的污染,免去了道路上的奔波,提高了工作效率,更好的提高工作效率。 类似于当下的许多聊天工具Netmeeting、MSN-Message、腾讯QQ等等。此次设计的聊天室工具引用了基于C/S架构的JAVA RMI技术的远程协助协同。服务器端(Server)启动后等待客户端(Client)连接,当客户端和服务器端建立有效连接之后就可以进行有效的通信,并且具备对聊天信息保存的功能,便于再次查找。关键词: 互联网 RMI 远程调用The design of chatting room software base on Java RMI Abstract:
6、All industries of the world are developing with high speed,meanwhile,larger demand and more strict requirement of computer technology were asked.All these requirement including Remote control、The frame structure andintegratedservice platform、Operation and maintenance easily. So Remote control is mor
7、e and more popular. At the background of quickly development of Internet, computers become essential part of our life, Smaller volume of computer make it easy for us to take it and remote assistant system become more and more important. On the JAVA development plantform,we can convey object and run
8、the program on other developing platform. Remote assistance system base on RMI is used in many filed.This time I mainly work for remote communication basic on JAVA RMI. RMI (Remote Method Invoke remote method invocation) Java is a convenient mechanism for network communication, It allows a Java virt
9、ual machine class calls another method of Java virtual machine class. The two Java virtual machine can be used on the same machine, can also be on different machines. RMI hides the details of the specific communication network. The access object on the remote host as access to local objects. The use
10、r does not need to consider the specific details of the communication network.The technology which basic on remote provide lost of convenient, easing traffic,reducing environment polluting,improving Efficiency and so on. The same as current chatting tools like Netmeeting、MSN-Message、TencentQQ etc.Th
11、e design is based on C/S fram assistented with JAVA RMI.When Server start,it will waiting Client to contact with it.On the other hand ,messages can be stored,we can check some former chatting messages. Key words:Internet;RMI;Remote call引言现如今在网络上流行的实时聊天软件有QQ、微信、YY等聊天系统,我们只要记住自己朋友及对方的专属号码,不管在哪里,只要我们能上
12、网,就可以通过这些聊天软件和相应的号码,呼叫他们进行实时的聊天。这些软件的工作模式多半是服务器/客户端(C/S)的。我们可以免费地在开发这些软件的公司网站上下载客户端程序,但是我们很难得到服务器端的程序。对于一些个人的网络,如果没有连接到互联网上,那么这些软件就将无用武之地,更不可能会有程序源代码。旨在于学习和了解这些软件的工作原理和结构,开始了关于这个课题的研究。 在当前的社会环境下,无论是工业方面、企业的管理方面、家庭办公方面以及各行业的多个维度,我们可以看到它们对远程聊天的需求,远程聊天系统的出现提高的工业生产的效率,改变了企业管理的模式,促进了现代家庭办公的出现,它在多方面的发挥的作用
13、逐体现出来。网络的速度在越来越快的发展着,网络的技术也在一天天地更新着,远程家庭控制,远程网络授课、远程就医、远程办公等,这些都将成为主流。这些都为远程聊天软件提供了一片广阔的发展空间。 此次毕业设计通过利用网络通信技术实现了一组基于C/S架构的远程调用函数的聊天系统。所采用的开发技术是面向对象的技术,采用的语言是Java语言,开发平台是windows7,远程控制的模块采用的是服务器/客户机的开发模式,网络通信的部分用的是面向连接的传输控制协议(TCP)。 1 开发工具和环境1.1简介 此次设计的基于RMI的远程聊天系统是一Java 为开发语言的。聊天工具的工作过程是启动服务器端的服务软件,然
14、后启动客户端软件,这时服务器端和客户端就可以建立连接,那么在这个有效的远程连接下,客户端和服务器端就可以进行有效地通话,也是实现了本次设计的核心目的远程聊天。在聊天执行的过程中,由于是公共的聊天室所以聊天的内容是被存储到聊天数据库里的,这些信息室可以再次查看的。远程的客户启动客户端程序后输入自己的名字信息点击连接就可以加入到聊天的队列中。 如今的远程控制类的软件有着较为广泛的应用范围,可以进行的工作业越来越多无论是办公,技术支持,维护管理,给人们提供的方便时越来越大。所以说此次远程聊天软件的设计十分有意义。1.2开发技术的介绍1.2.1开发语言 Java作为一种开发语言的出现起到了计算机信息交
15、换的里程碑式的影响。在单个计算机时代,计算机程序进程之间通过共享存储进行变量的交换;在网络发达的时代,运行在不同主机上的程序按照网络的通信协议进行无格式的信息狡猾;在Java时代,运行在网络上的程序进程进行交换的是小的应用程序。它是一个由一组属性和方法构成并且有可执行实体的对象。Java的出现带来了自PC出现的又一次技术革命。作为一种开发语言,它以它的面向对象、简单、健壮、安全、结构性、可移植、多线程被大家所熟知。更重要的是它的跨平台的撰写特点。因此Java开发语言被广泛的应用于个人电脑的、游戏控制台、科学计算、互联网、数据中心、移动电话,同时Java的开发群体也是全球最大的。Java本身也是
16、一种分布式语言。Java语言支持Internet应用的开发,在最基本的Java应用编写的程序接口中有一个网络应用编程接口,给编程者提供了专门用于网络编程的类库,有serversocket、URL等等。1.2.2开发技术 在这次的毕业设计中,主要用到了Java RMI、服务器/客户端架构、JavaIO等技术,mysql、TCP/IP。 (1)Java RMI介绍RMI技术是Java的一组用于分布式应用程序开发的API.RMI应用序通常是有两个独立的程序,也就是我们常说的客户端程序和服务器端程序。服务器端程序会创建多个远程对象,使得这些对象能够被调用,客户端程序就可以调用远程方法。RMI为服务器端
17、和客户端的通信传递提供了一种机制。因为RMI集成了Java序列化好Java远程方法协议,在这种情况下,就可以实现原来在同一操作系统调用的方法,变成了不同操作系统之间的方法调用。从Java1.1开始,作为分布式对象的核心的RMI技术成为了Java API之一。由于RMI的出现使得多台计算机上的Java应用之的通讯极大简化。与Java提供的比较灵活的Socket通信机制相比,由于socket需要在客户端和服务器端进行消息传递时对信息编码和解码,这样会比较麻烦而且容易出错。RMI与RPC(Remote Procedure Call 远程过程调用)的区别:RPC把通信接口抽象到过程级别的调用,从而使编
18、程人员不用关心底层的通信细节,但它不能很好地使用分布式对象系统。 RMI大致有如下的一些优点:(1)属性可移动RMI可以将其属性完整地从客户端机器移动到服务器端,也可以将服务器移动到客户端(2)面向对象RMI可以实现将完整的 对象作为参数和返回进行传递,而不只是预定义的数据类型。图1-1RMI框架结构图1.2.3客户端/服务器端体系结构 聊天室工具应用的是C/S体系的结构设计,在这里简单介绍一下C/S体系结构以及它的优缺点。 C/S体系架构全称是客户端对服务器端,属于软件系统的结构,通过这种架构,它可以充分利用客户和服务器两端的硬件环境的优势,合理地将任务分配给客户端和服务器端,减少了系统进行
19、通讯的开销。、C/S架构的软件一般多用在专用网络或者局域网上,而且由于面向的终端客户比较稳定,对信息的控制力很强.基于C/S架构的软件可以集中注意力在系统功能的实现、系统业务流程的流转,由于相对固定的用户群体,对系统的运行速度要求不是太高,这使得系统的架构和设计要求较少的系统高性能。C/S架构的软件有着较好的交互性,客户端的显示层可以有多种实现方式,既可以是面向程序员的命令集界面,也可以是人性化风格的图形用户界面,让普通用户可以操作软件。广泛应用于Internet上的B/S架构拓展了传统的C/S概念和模式,类似于多层的C/S结构,是一种以web技术为基础的系统平台模式。把复杂的应用程序移动到了
20、服务器上,使用户的代价大大减小。B/S结构的系统使用的是标准化的IE浏览器、Firefox浏览器、sogou、Google等浏览器作为客户的用户界面,对用户来说他们不需要知道数据的具体位置,只需要知道访问对象的网址就可以了,更适合现场人员以及诊断专家使用。1.24 Java IO简介 Java的类库中提供了多种输入输出接口,有文件读写,设备的输入输出。在Java中IO是以流为基础来进行输入输出,所有输入、输出的数据都被串行化流的形式进行输入或者输出。如果Java程序需要从数据源读取数据的时候,就会建立一个能够传递数据源的数据流。数据流的形式也是多样,可以是文件,可以是内存,或者还可以是网络等等
21、。同时,Java程序需要输出数据的时候,也会开启一个数据流,数据的接收端也可以是文件、网络等等。数据流的出现极大的方便了数据的输入输出。1.2.5 MySql介绍 Mysql是一个典型的关系型数据库,它的工作方式是将数据保存在不同的表中,而不是说将数据放在一个大的数据仓库中,通过这样做,数据库的运行速度大大提高,运行的灵活性也得到提高。在访问数据库地也是用的SQL的标准化语言。在与其他大型数据库相比情况下,也有一些不足,但它的不足远远小于它的优势给人们带来的方便。也由于速度快,体积小,开源的缘故,它的受欢迎程度并没有因此而受到影响。对于一些小型网站或者小型企业来说,mysql足以满足他们的需要
22、。 MySql作为普遍应用的数据库,它的优越性已经被大家看到,它是由C和C+两种编程语言来写的,用了多种编译器进行编译。优越的性能使它能够为多种编程语言提供API,它能够充分的应用CPU资源。在设计的时候mysql已经SQL的查询算法进行了优化,这大大提高了查询速度。Mysql既可以作为一个库应用到软件中,也可以做为单独的应用程序应用到C/S的网络环境当中。mysql能够较好的支持多种语言,有TCP/IP、ODBC和JDBC等几种数据库连接途径。对大型数据库mysql仍然能够支持,并且提供优化数据操作,数据检查等功能。1.26 TCP/IP 传输控制协议(TCP/IP),是一种规范网络上的的通
23、讯设备的一套协议,特别是主机和主机之间的进行信息交换的数据格式和发送方式。在Internet上,它是基础协议,也是信息在网络上传递的一种打包和寻址标准方法,在数据传送过程中,我们可以比喻成为两个信封。我们把TCP和IP比喻成信封,我们要传递的信息被划分成若干个部分,在传递信息的时候计算机把每一部分被塞入一个TCP信封,并在该“信封”上标记上段号信息,如同信封上的信息,再将TCP塞入IP大信封发送到网上。接收端收到TCP信封时,按照形同的的相关协议拆开信封,取出数据,根据编号按发送前的顺序将信息还原,通过校验。它在Internet中几乎可以无差错的传递信息。1.27TCP/IP主要的三个层面的功
24、能链路层通常指的是操作系统中设备驱动程序和计算机中对应的网络接口卡。 网络层,也称作互联网层,处理分组在网络中的活动。运输层为电脑上的应用程序提供点对点的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。1.3开发及软件测试环境 开发基于Java RMI架构的聊天室所用到的软硬件开发环境 1.3.1软件环境 Java运行环境、Java基础类库:JDK1.8.0和Java工具 操作系统平台:Microsoft windows7+MyEclipse14.4 数据库:mysql 1.3.2开发、测试硬件环境 操作系统:Microsoft Wi
25、ndows 7 旗舰版 (64位)处理器:(英特尔)Intel(R) Core(TM) i3-2350M CPU 2.30GHz(2300 Mhz) 主板:联想 Base Board Product Name 内存:4.00 GB (1333 MHz) 硬盘:750 GB (西数 WDC WD7500BPVT-24HXZT3 ATA Device 显卡 :NVIDIA GeForce GT 550M 显示器:LG LG Display 32位真彩色 60Hz 1.4本章小结 本章主要介绍了在基于Java RMI架构下开发远程聊天室所需要用的技术和工具,并且简单介绍了这些技术和工具的技术和特点。
26、另外也要注意在使用相关软件和技术是要注意有些问题,同时也列出了软件在开发和测试时用到的硬件环境。 2需求分析和可行性分析 21需求分析和可行性分析2.11聊天软件的功能需求 基于Java RMI的远程聊天室软件主要是提供给使用者进行远程协助聊天,交流,主要包括以下功能(1) 启动服务器;(2) 定义在服务器上的操作函数,也就是客户端可以远程调用的函数;(3) 远程客户端与服务器端建立有效连接;(4) 在远程客户端上输入聊天人姓名参与聊天(5) 所有在聊天室的用户可实时看到新加入的聊天用户(6) 自助断开聊天(7) 聊天信息回看功能2.1.2软件运行需求 运行环境和软件本身的关系就像人类和大自然
27、的关系一样,此次设计的基于Java RMI架构的远程聊天系统也是如此。下面将介绍本聊天室软件的运行环境。因为本聊天软件是基于Java RMI架构的,是存在C/S结构的,因此是需要再服务端进行部署的,下面推荐的最低运行环境如下:(1)硬件要求:处理器:Intel奔腾3 1.8GHz 主板:ASUS 4P800 内存:667MGHz 1G 硬盘:10GSATA (2)软件环境 操作系统Windows7, 文件配置:Java运行库2.2本章小结 本章分析介绍了软件的需求分析和软硬件的可行性分析。通过分析可以看到本软件是有相当的需求意无论从软件还是硬件上本聊天软件是切实可行的。3UML建模 3.1系统
28、的模块用例 3.1.1聊天室各个模块儿用例图 用例图(use case diagram)是外部用户所能观察到的功能的模型图,他描述人们如何使用一个系统或者软件。用例的主要元素是用例和参与者,用来描述系统的功能,并指出各个功能的操作者。用例图在各种开发活动中被广泛使用,但是它最常用来描述系统及子系统,用例用椭圆来表示,通信是连接参与者和用例的直线。 用例(use case) 一个用例是用户与计算机之间的一次典型的交互作用,它代表的是系统的一个完整地功能。 角色(actor) 角色是系统外部的一个实体,它以某种方式参与用例的执行过程,参与者由参与用例是所担任的角色表示,通过向系统输入请求或请求来出
29、触发系统的执行。 角色的分类 主要角色:直接参与与系统交互的人或执行系统主要的功能的参与者。比如超市购物系统,管理员就是主要参与者 次要角色:指使用系统次要功能的参与者,或完成系统维护一般功能的参与者。比如超市管理系统的数据库管理人员。 外部硬件:作为系统的一部分非计算机的硬件,超市管理系统的中的扫描仪,打印机等等 其他系统:与系统交互其他外部系统基于Java RMI远程聊天系统的用例图图3.1客户端端用例图 图3.2服务器端用例图 3.1.2 协作图 协作图表述的是软件或者系统在运行的时候,各个模块的是怎样合作和交流的,对象之间是怎样进行联系,如何进行信息的接受发送等等。本里聊天软件的交互图
30、。 图3.3 聊天室交互图聊天系统中的每一个客户与服务器建立有效连接,通过与服务器的发送和接受服务器发送的消息实现了用户和软件的交互。3.3可行性分析 可行性分析包括了多方面内容,有技术可行性,经济可行性,操作可行性。开发设计本聊天软件可能受到的资源时间上的限制,良好的可行性分析能够对项目有较好的预期,从多个角度上判断方案的可行性,是否能够在有限的资源条件下和规定的时间内完成项目。3.3.1 软件可行性 基于Java RMI的远程聊天系统,主要实现客户端和服务器端两端程序的设计。服务器端主要是设置多种函数,以供客户端的程序进行调用设置服务器端的自身功能函数,有信息广播函数,信息存储、信息查询函
31、数。综上分析软件是可行的。33.2技术可行性 有着一定的Java开发经验,喜欢Java应用程序的编写。本次课题基于Java RMI远程聊天系统使用的就是以Java为主的开发语言。这个聊天软件实在Myeclipse上编写的Java代码,MySql主要用于数据库的设计和实现。这些技术和软件都是行之可效的技术,而且在多个方面上都已经得到了应用。经过分析利用现有的技术,基于RMI技术的远程协助系统与其功能均可实现,所以在技术方面是可行的。3.3.3 操作可行性本次设计的软件,使用的是JFrame进行设计的操作界面,界面的设计简单明了,用户在使用上午需经过培训就可以直接操作。软件的便捷操作和易用说明了本
32、软件在操作上是可行的。3.3.4经济可性本次开发的软件所需要的基本运行环境都是基础级别的硬件环境,普通的用户都是可以承受的起的,而软件是放在网上提供给大家免费使用的。由于软件是用的Java语言进行开发的,语言具有开源性,所以在软件上不需要有太大的花费,知识说在硬件环境的组成上有一部分消耗。单单是用户在使用本软件是不需要太大的花费的。所以说本软件在经济上可行的。3.3.5结论经过上述从技术方面、经济方面、操作方面及各个方面的可行性分析可以看到,无论是硬件还是软件方面都可以达到软件有效使用的要求。所以此次设计的基于Java RMI的远程聊天软件都具备可行性,本软件是可以开发的。3.4本章小结本章主
33、要是针对软件本身进行UML建模的分析和多角度可行性的分析。分析了软件运行和设计各个运行图,以便于读者能更好的了解本软件。后文有对软件的进行了多角度的可行性的分析,确定了软件的开发前景和开发价值。4软件的设计4.1软件概述 基于Java RMI技术的远程聊天软件主要分为服务器端和客户端。服务器端将提供多种方法供客户端进行调用,减小客户端的开销。当服务器端启动后,这时候的服务器端是等待客户端进行连接。RMI应用的创建(1)创建远程接口模块:创建远程算法的接口,继承自Java rmi Remote (2)创建远程类:实现远程接口的所有算法 (3)创建服务器端程序:该部分在rmi registry注册
34、表注册远程对象 (4)创建客户端接口:创建可供客户端使用的函数接口 (5)创建客户端类:实现客户端所需要的算法4.2软件的总体设计与功能 基于Java RMI技术的远程聊天软件总体功能结构分为4个部分:服务器端,客户端,通讯模块,信息回看模块。 图4-1软件工作流程图4.3服务器端设计与功能。服务器端程序是远程聊天软件的主要组成部分之一,它主要实现为远程的客户端提供类似于桥的功能。能够为远程的客户端提供连接服务器,断开服务器,广播消息,查看远程消息的功能。 4.3.1服务器端的详细介绍作为聊天软件的核心部分,承担着各个客户端连接,接收来自客户端的消息,广播客户端的消息,存储来自客户端的信息。服
35、务器端注册通过在RMI的注册表中注册IP地址和端口,注册成功后服务器就处于等待连接状态。(2)服务器广播消息服务器端接收到信息后,通过广播函数,将某个客户端发来的信息发送给所有的客户端,客户端接收到消息,完成一次聊天。(3)聊天信息的存储服务器端接收到消息时,同时会将消息存储到软件的数据库中,将有利于用户查看历史聊天记录4.3.2客户端程序介绍 客户端是直接与使用软件的用户进行直接的交互,在整个软件的系统中占主导地位。是整个软件系统的主要体现。在客户端上我们能够看到并且使用的功能有,连接到服务器,与服务器断开连接,发送聊天信息,查看历史聊天记录。(1)连接到服务器 用户通过在服务器的姓名输入框
36、中输入自己的姓名后,点击连接按钮与服务器建立联系,服务器会在这时候向聊天室的其他所有用户发送该用户加入聊天的信息,用户就可以发行聊天信息了。(2)发送聊天信息 用户在于服务器建立有效的连接之后,在输入框中输入相应的聊天信息后点击发送,服务器就可以将信息进行广播,让每一个在聊天室里的用户都可以接受到聊天信息(3)查看历史聊天记录用户在结束聊天后可点击查看历史消息按钮查看所有聊天记录。(4)断开与服务器连接用户如果想结束聊天,只要点击断开连接按钮就可以退出聊天室,此时服务器会向所有用户发送该用户的退出消息。4.4本章小结 本章主要介绍了软件的整个设计过程,主要技术的实现。讲述了RMI远程技术是如何
37、搭建的,软件的框架构,整体运行流程,软件的连个主要核心部分的功能。通过设置本章,将有利于读者和用户了解和使用本聊天软件,能够让非专业的用户轻松地了解软件的运行过程和相关的功能。本章设计的必要性非常重要。5.软件的主要设计实现5.1软件开发环境的搭建(1)JDK的安装,本软件的设计语言是Java开发语言,计算机环境需要有JVM支持,此次安装的JDK版本是1.8.0版本,安装完后在对环境变量进行配置其中有JAVAHOME PATH CLASSPATH等环境变量。(2)MyEclipse安装,在windows7平台下安装软件,并设计代码,并导入相应的驱动包(jar包)。5.2软件实现思路 经过上述的
38、综合分析,基于Java RMI的远程聊天系统是客户端和服务器端通过TCP/IP协议进行通信的。所以需要两个独立的程序客户端和服务器端。软件的整体流程,在服务器端启动后,客户端的用户只要启动客户端程序,然后在最上部的对话框中输入用户姓名,点击连接按钮,此时只要网络没有问题用户就可以有效的连接到服务器上,这时候服务器会对已经在聊天室中的用户发送新用户加入的提示,此时就可以进行聊天了。5.2.1服务器端设计(1)服务器端设计 public interface Chatv2Server extends Remote public void addClient(Chatv2Client client,S
39、tring msg) throws RemoteException;/定义添加函数 public void removeClient(Chatv2Client client,String msg) throws RemoteException;/删除用户函数 public void sendMessage(Chatv2Client client,String msg) throws RemoteException;发送信息函数 public void savve(Chatv2Client client,String name,String msg)throws RemoteException;
40、/保存聊天信息函数 public void checkinfosavve(Chatv2Client client)throws RemoteException;/查看聊天记录函数(2)远程接口的实现 /定义远程调用类,继承接口Chatv2Serverpublic class Chatv2ServerImpl extends UnicastRemoteObject implements Chatv2Server ArrayList list;protected Chatv2ServerImpl() throws RemoteException super();list=new ArrayList
41、();Override /定义addClient函数public void addClient(Chatv2Client client, String msg)throws RemoteException if(!list.contains(client) for(int i=0;ilist.size();i+) sendMessage(Chatv2Client)list.get(i),msg); list.add(client); Override/定义removeClient函数public void removeClient(Chatv2Client client, String msg
42、)throws RemoteException if (list.contains(client) for(int i=0;ilist.size();i+) sendMessage(Chatv2Client)list.get(i),msg); list.remove(client); Override/定义sendMessage函数,主要用于广播信息public void sendMessage(Chatv2Client client, String msg)throws RemoteException if(!list.contains(client) return; for(int i=0
43、;ilist.size();i+)String user=client.getName(); if(user=null |user=) user=Anonymous; (Chatv2Client)list.get(i).sendMessage(user+: +msg); Override/定义savve函数,用于存储聊天信息public void savve(Chatv2Client client, String name, String msg)throws RemoteException String user= new String(); String ms=new String();
44、user=name; ms=msg; Addinfo addin=new Addinfo(); addin.insert(user, ms); Override/定义checkinfosavve函数,用于查看聊天记录public void checkinfosavve(Chatv2Client client) throws RemoteException infoshow showw=new infoshow();showw.check();(3)服务器端注册 public static void main(String args) try / ChatServerImpl server=ne
45、w ChatServerImpl(); / Naming.bind(IChatServer,server); / System.out.println(Server Start!); String url=rmi:/localhost:8888/Chatv2Server; /链接地址LocateRegistry.createRegistry(8888);Chatv2ServerImpl server=new Chatv2ServerImpl(); Naming.rebind(url, server); System.out.println(= Hello server Ready = ); c
46、atch(Exception e) System.out.println(IChatServer: +e.getMessage(); e.printStackTrace(); 图5.1服务器端启动5.2.2客户端设计(1)界面设计public class SwingChatv2Client extends UnicastRemoteObject implements Chatv2Client,ActionListener Chatv2Server server=null;/界面的设计 boolean connected=false; String title=ChatClient; JFram
47、e f; String username=; JTextArea area; JTextField inName; JButton connect; JButton disconnect; JButton send; JButton info; JTextField contentIn;private ActionListener change; public SwingChatv2Client() throws RemoteException super(); /System.setSecurityManager(new RMISecurityManager(); public void i
48、nit() /setLayout(new BorderLayout();/界面的设计参数 f=new JFrame(title); f.setBounds(250,250,500,500); f.setVisible(true); JPanel pNorth,pSouth,pText; pNorth=new JPanel(); pSouth=new JPanel(); pText=new JPanel(); inName=new JTextField(6); contentIn=new JTextField(22); area=new JTextArea(15,35); connect=new
49、 JButton(connect); disconnect=new JButton(Disconnect); send=new JButton(send); info=new JButton(info); pNorth.add(new JLabel(Enter your Name: ); pNorth.add(inName); pNorth.add(connect); pNorth.add(disconnect); pSouth.add(new JLabel(Enter Message: ); pSouth.add(contentIn); pSouth.add(send); pSouth.ad
50、d(info); pText.add(new JScrollPane(area); connect.addActionListener(this); disconnect.addActionListener(this); send.addActionListener(this); info.addActionListener(this); contentIn.addActionListener(this); f.add(pNorth,BorderLayout.NORTH); f.add(pSouth,BorderLayout.SOUTH); f.add(pText,BorderLayout.CENTER); f.validate();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44971-2024土壤硒含量等级
- 工作总结之大学生销售实习总结
- 银行业务流程管理制度
- 银行合规监督制度
- 科技有限公司转让合同(32篇)
- 《连锁企业员工培训》课件
- 武汉凯德1818广场购物中心案例研究分析报告(上)
- 新产品开发(toshiba案例分析组)
- 【培训课件】青浦区科技管理相关政策
- 2025届广东省佛山市第四中学高考考前提分数学仿真卷含解析
- 介绍辽宁营口的PPT模板
- 山东省烟台市2023-2024学年三上数学期末含答案
- 食材配送供货计划方案(10篇)
- 主体幸福感模型的理论建构
- 广东建材产品见证取样检测要求及送检办法
- 观察记录那些事儿-走进经典阅读《聚焦式观察:儿童观察、评价与课程设计》优质课件PPT
- QC小组(提高维修效率)课件
- 领导干部的法治思维概论
- 火成岩岩石化学图解与判别
- 《幼儿园3-6岁儿童学习与发展指南》科学领域
- 高中物理-电场的能的性质教学设计学情分析教材分析课后反思
评论
0/150
提交评论