1、 本科毕业论文 基于 JAVA的聊天系统的设计与实现 学 院:机电工程学院 专 业:计算机科学与技术双学位 学 号: 姓 名: 指导教师: 职 称: 论文提交日期: 年 月 摘 要 随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有 Netmeeting、腾讯 QQ、 MSN-Messager 等等。该系统开发主要包括一个网络聊天服务器程序和一个 网络聊天客户程序两个方面。前者通过 Socket 套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行
2、客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承 Thread 类来建立多线程。开发中利用了计算机网络编程的基本理论知识 ,如 TCP/IP 协议、客户端 /服务器端模式( Client/Server 模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方 法。经过分析这些情况,该局域网聊天工具采用 Eclipse 为基本开发环境和 java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统 关键词: 局域网 聊天 s
3、ocket java Abstract Along with the fast development of Internet, the network chating tool has already become one kind of important communication tools and received more and more web cams favor. At present, many extremely good chating tools have appeared . for example, Netmeeting, QQ, MSN-Messager an
4、d so on. This system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat. The former establishes the server through the Socket, the server can read and deliver the information which client side sends, and can renovate the
5、 users tabulation. The latter make a connection with the server, carries on communication between the client side and the client side. With the LAN correspondence mechanism principle, through inheritting the Thread kind to establish the multithreading directly. In the development, it uses the elemen
6、tary theory knowledge which the computer network programmes. for example, TCP/IP agreement, Client/Server pattern, network programming design method and so on. In the network programming, it realizes reading and transmission of the information, that is,informaton flows realize the information exchan
7、ge, introduce information flow analysis for realizing a system, in which containes some basic software engineering methods. After analyzes these situations, this LAN chating tool takes Eclipse as the basic development environment and compiles in java language. first, it will establish the system app
8、lication prototype in a short time. then, for the initial prototype system, it needs constantly revised and improved, until a viable system. Key words: LAN Chat Socket Java 目 录 1. 绪论 01 1.1 JAVA 的 网络功能与编程 01 1.1.1 JAVA 概述 02 1.1.2 JAVA 的特点 04 1.1.3 JAVA 语言在 网络上的应用 07 1.2 JavaBeans 技术 08 1.3 IP/TCP 协
9、议常识 08 1.4 Socket 的简介 09 2. 规划设计 11 2.1 课题来源 11 2.2 需求分析 11 3. 系统分析与设计方案 12 3.1 聊天系统的总体设计要点 12 3.2 聊天系统的设计步骤及功能模块划分 12 3.3 功能模块结构图 13 4. 系统设计环境与测试 26 4.1 开发环境和工具 26 4.2 硬件环境 26 4.3 聊天系统的测试 26 5. 毕业设计总结 28 5.1 毕业设计总结和展望 28 5.2 经验和感想 28 致 谢 30 参考文献 31 内蒙古农业大学学士学位论文 1 1 绪论 随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络
10、的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本聊天系统以聊天交流为 主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的网络聊天系统是基于开放的 JAVA 应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。 1.1 JAVA 的网络功能与编程 1.1.1 JAVA 概述 美国硅谷有一句行话,每 10 年 15 年有一次轮回。最近的一次轮回就是从 Java开始。 Java
11、是一个由 Sun 公司 开发而成的新一代编程语言。使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论你使用的是哪一种 WWW 浏览器,哪一种计算机,哪一种操作系统,只要 WWW 浏览器上面注明了“支持 Java”,你就可以看到生动的主页。 Java 正在逐步成为 Internet 应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自 PC 机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。 Sun 的 Java 语言开发小组成立于 1991 年,其目的是开拓消费类电子产品市场,例如,交互式电视、烤面包箱等。 Sun 内部人员把这个 项目称为 Green,那时
12、WorldWideWeb 还在图纸上呢。该小组的领导人是 JamesGosling,是一位非常杰出的程序员。他出生于 1957 年,于 1984 年加盟 SunMicrosystem 公司,之前在一家IBM研究机构工作。他是 SunNeWs窗口系统的总设计师。也是第一个用 C实现的 EMACS的文本编辑器 COSMACS 的开发者。 在研究开发过程中, Gosling 深刻体会到消费类电子产品和工作站产品在开发哲学上的差异:消费类电子产品要求可靠性高、费用低、标准化、使用简单,用户并不关心 CPU 的型号,也不欣赏专 用昂贵的 RISC 处理器,他们需要建立在一个标准基础之上,具有一系列可选的
13、方案,从 8086 到 80586 都可以选取。 从 C 开始 为了使整个系统与平台无关, Gosling 首先从改写 C编译器着手。但是 Gosling在改写过程中感到仅 C 是无法满足需要的,于是在 1991 年 6 月份开始准备开发一个新的语言,那么给它起一个什么名字呢 ?Gosling 回首向窗外望去,看见一棵老橡内蒙古农业大学学士学位论文 2 树,于是建一个目录叫 Oak,这就是 Java 语言的前身(后来发现 Oak 已是 Sun 公司另一个语言的注册商标,才改名为 Java,即太平洋上一个盛产咖啡 的岛屿的名字)。 Gosling 在开始写 Java 时,并不局限于扩充语言机制本
14、身,更注重于语言所运行的软硬件环境。他要建立一个系统,这个系统运行于一个巨大的、分布的、异构的网格环境中,完成各电子设备之间的通信与协同工作。 Gosling 在设计中采用了虚机器码( VirtualMachineCode)方式,即 Java 语言编译后产生的是虚拟机,虚拟机运行在一个解释器上,每一个操作系统均有一个解释器。这样一来, Java 就成了平台无关语言。这和 Gosling 设计的 SunNeWs 窗口系统有着相同的技术味道。在NeWs 中用户 界面统一用 Postscript 描述,不同的显示器有不同的 Postscript 解释器,这样便保证了用户界面的良好的可移植性。 Pat
15、rickNaughton 也是 Sun 公司的技术骨干,曾经是 OpenWindows 项目的负责人。当 Naughton 加入该小组后,整个工作进展神速。经过 17 个月的奋战,整个系统胜利完成。它是由一个操作系统、一种语言( Java)、一个用户界面、一个新的硬件平台、三块专用芯片构成的。通常情况下,这样的项目在 Sun 公司要 75 个人干三年。项目完成后,在 Sun 公司内部做了一次展示和鉴定,观众的反 应是:在各方面都采用了崭新的、非常大胆的技术。许多参观者对 Java 留下了非常深刻的印象,特别得到 Sun 的两位领导人 ScottMcNealy 和 BillJoy 的关注,但 J
16、ava 的前途未卜。 Java 语言的转折点 到了 1994 年, WWW 已如火如荼地发展起来。 Gosling 意识到 WWW 需要一个中性的浏览器,它不依赖于任何硬件平台和软件平台,它应是一种实时性较高、可靠安全、有交互功能的浏览器。于是 Gosling 决定用 Java 开发一个新的 Web 浏览器。 这项工作由 Naughton 和 JonathanPayne 负责,到 1994 年秋天,完成了WebRunner 的开发工作。 WebRunner 是 HotJava 的前身,这个原型系统展示了 Java可能带来的广阔市场前景。 WebRunner 改名为 HotJava,并于 199
17、5 年 5 月 23 日发表后,在产业界引起了巨大的轰动, Java 的地位也随之而得到肯定。又经过一年的试用和改进, Java1.0 版终于在 1996 年年初正式发表。 Java 带来的影响 Java 虽出现的时间不长,但已被业界接受, IBM、 Apple、 DEC、 Adobe、SiliconGraphics、 HP、 Oracle、 Toshiba、 Netscap 和 Microsoft 等大公司已经购买了 Java 的许可证。 Microsoft 还在其 Web 浏览器 Explorer3.0 版中增加了对 Java的支持。 另外,众多的软件开发商也开发了许多支持 Java 的软
18、件产品。如: Borland内蒙古农业大学学士学位论文 3 公司的基于 Java 的 快速应用程 序开发环境 Latte; Metrowerks 公司和NaturalIntelligence 公司分别开发的基于 Machintosh 的 Java 开发工具; Sun 公司的 Java 开发环境 JavaWorkshop; Microsoft 也开发出系列 Java 产品。数据库厂商如 Illustra,Sybase,Versant,Oracle 都在开发支持 HTML 和 Java 的 CGI( CommonGatewayInterface)。在以网络为中心的计算时代,不支持 HTML 和 J
19、ava,就意味着应用程序的应用范围只能限于同质的环境。 Intranet 正在成为企业信息系统最佳的解决方案。它的优点表现在:便宜、易于使用和管理。用户不管使用何种类型的机器和操作系统,界面是统一的 Web 浏览器,而数据库、 Web 页面、应用程序(用 Java 编的 applet)则存在 WWW 服务器上。开发人员只需维护一个软件版本,管理人员省去了为用户安装、升级、培训之苦,用户则只需一个操作系统,一个 Internet 浏览器足矣。 我们可以设想未来的计算方式,每个 HomePage 的实质是一个多媒体应用程序,这些程序用 Java 来开发。 Java 应用程序运行在异质的机器、异质的
20、操作系统之上,甚至于电冰箱、烤面包箱、防盗电子设备之中,用 Internet 把所有的电子设备连接起来,通过 TCP/IP 进行信息的交流。 Java 应用程序之间既可以交换消息,也可以交换程序(一个 Java 的小应用程序 applet) 。或许有一天,我们可以在Netscape 浏览器里查看电冰箱的温度,向烤面包箱发一个电子邮件。 Java 的出现是计算机信息交换的一个重要里程碑。在单机时代,程序进程之间靠共享存储进行变量交换;在网络时代,运行在不同宿主机上的程序按网络协议进行无格式的消息(二进制字符流)交换,消息的语义由交换程序双方维护;在Java 时代,运行在网络上的程序进程交换的是小
21、应用程序( applet)。小应用程序是什么 ?它是一个对象,由一组属性和方法构成,是一个可执行的实体;不仅有数据的状态,而且有定义在数据上的操作。未来可能进行 代表( Agent)交换,代理有一定的智能性,那便是信息交换的更高级阶段。 随着 Internet 的崛起、 Java 的诞生,巨型的、臃肿的应用软件开始向小型化发展,由众多“生活”在 Internet 上的小应用程序( applet)相互协作完成信息的处理与传递。 Java 会加速应用软件的小型化、网络化的趋势。随着 Internet的发展,软件必然是面向“大众”,而不是“少数人”的奢侈品,薄利多销将是网络应用软件的重要特点。分布式
22、对象技术保证了用多少,下载多少。 Java 连同Internet, WWW 正在改变应用软件的开发 和使用方式,一切都要围绕着网络,围绕着平台无关。很多人认为, Word、 Excel 等传统的信息处理工具都必然走向萎缩,因为它们是单机时代的产物。信息的价值在于使用和共享, Internet 和 Web 是信息的使用和共享最快捷、最便宜的方式, Word 将演化成为 Web 写作工具, Excel 则将演化成 Web 上的电子表格。 内蒙古农业大学学士学位论文 4 1.1.2 JAVA 的特点 (一) JAVA 的主要特点 Java 语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒
23、、 安全、体系结构中立、可移植、高性能、多线程以及动态性。 1.简单性 Java语 言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java 略去了运算符重载、多重继承等模糊的概念 ,,且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外, Java 也适合于在小型机上运行,它的基本解释器及类的支持只有 40KB 左右,加上标准类库和线程的支持也只有 215KB 左右。库和线程的支持也只有 215KB 左右。 2.面向对象 Java 语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口
24、模型。对象中封装了它的状 态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。 3.分布性 Java 是面向网络的语言。通过它提供的类库可以处理 TCP/IP 协议,用户可以通过 URL 地址在网络上很方便地访问其它对象。 4.鲁棒性 Java 在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时, Java 提示出可能出现但未被处理 的例外,帮助程序员正确地进行选择以防止系统的
25、崩溃。另外, Java 在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。 5.安全性 用于网络、分布环境下的 Java 必须要防止病毒的入侵。 Java 不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用 “特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易 产生的错误。 6.体系结构中立 Java 解释器生成与体系结构无关的字节码指令,只要安装了 Java 运行时系统,Java 程序就可在任意的处理器上运 行。这些字节码指令对应于 Java 虚拟 机中的表内蒙古农业大学学士学位论文 5 示, Java 解释器得到字节
26、码后,对它进行转换,使之能够在不同的平 台运行。 7.可移植性 与平台无关的特性使 Java 程序可以方便地被移植到网络上的不同机器。 同时,Java 的类库中也实现了与不同平台的接口,使这些类库可以移植。另外, Java 编译器是由 Java 语言实现的, Java 运行时系统由标准 C 实现,这使得 Java 系统本身也具有可移植性。 8.解释执行 Java 解释器直接对 Java 字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。 9.高性能 和其它解释执行的语言如 BASIC 不同, Java 字节码的设计使之能很容易地直接转换成对应于特定 CPU 的机器码,从
27、而得到较高的性能。 10.多线程 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。 11.动态性 Java 的设计使它适合于一个不断发展的环境。在类库中可以自由地加入 新的方法和实例变量而不会影响用户程序的执行。并且 Java 通过接口来支 持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。 (二) JavaApplet Java语言的特性使它可以最大限度地利用网络。 Applet是 Java的小应 用程序 ,它是动态、安全、跨平
28、台的网络应用程序。 JavaApplet 嵌入 HTML 语言 ,通过主页发布到 Internet。网络用户访问服务器的 Applet 时 ,这些 Applet 从网络上进行传输 ,然后在支持 Java的浏览器中运行。由于 Java语言的安全机制 ,用户一旦载入 Applet,就可以放心地来生成多媒体的用户界面或完成复杂的计算而不必担心病毒的入侵。虽然 Applet 可以和图像、声音、动画等一样从网络上下载 ,但它并不同于这些多媒体的文件格式 ,它可以接收用户的输入 ,动态 地进行改变 ,而不仅仅是动画的显示和声音的播放。 (三)丰富的类库 Java 提供了大量的类以满足网络化、多线程、面向对
29、象系统的需要。 1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函 数处理等 ,可以用它简单地实现 Java 程序的运行平台。 2.实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 内蒙古农业大学学士学位论文 6 3.输入输出包用统一的 “流 “模型来实现所有格式的 I/O,包括文件系统、 网 络、输入 4.低级网络包用于实现 Socket 编程。 5.抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件 , 包括窗口、菜单、滚动条、对话框等 ,使得 Java 可以移植到不同平台的机器。 6.网络包支持 Internet 的 TCP/IP 协议 ,提供了与 I
30、n-ternet 的接口。 它支持URL 连接 ,WWW 的即时访问 ,并且简化了用户 /服务器模型的程序设计。 (四) Java 和 C、 C+对于变量声明、参数传递、操作符、流控制等 ,Java 使用了和 C、 C+ 相同的传统 ,使得熟悉 C、 C+的程序员能很方便地进行编程。同时 ,Java为 了实现其简单、鲁棒、安全等特性 ,也摒弃了 C 和 C+中许多不合理的内容。 1.全局变量 Java程序中 ,不能在所有类之外定义全局变量 ,只能通过在一个类中定 义公用、静态的变量来实现一个全局变量。例如 : ClassGlobalVar public static global_var; 在
31、类 GlobalVar 中定义变量 global_var 为 public static,使得其它类 可以访问和修改该变量。 Java 对全局变量进行了更好的封装。而在 C和 C+中 ,依赖于不加封装 的全局变量常常造成系 统的崩溃。 2.Goto Java 不支持 C、 C+中的 goto 语句 ,而是通过例外处理语句 try,Catch, final等来代替 C、 C+中用 goto 来处理遇到错误时跳转的情况 ,使程序更可读 且更结构化。 3.指针 指针是 C、 C+中最灵活 ,也是最容易产生错误的数据类型。由指针所进行 的内存地址操作常会造成不可预知的错误 ,同时通过指针对某个内存地址
32、进行显 式类型转换后 ,可以访问一个 C+中的私有成员 ,从而破坏安全性 ,造成系统的 崩溃。而Java 对指针进行完全的控制 ,程序员不能直接进行任何指针操作 ,例如 把 整数转化为指针 ,或者通过指针释放某一内存地址等。同时 ,数组作为类在 Java 中实现 ,良好地解决了数组访问越界这一 C、 C+中不作检查的错误。 4.内存管理 在 C中 ,程序员通过库函数 malloc()和 free()来分配和释放内存 ,C+ 中则通过运算符 new 和 delete 来分配和释放内存。再次释放已释放的内存块或 未被分配的内存块 ,会造成系统的崩溃 ;同样 ,忘记释放不再使用的内存块也 会逐渐耗尽系统资源。而在 Java 中 ,所有的数据结构都是对象 ,通过运算符 new 为它们分配内存堆。通过 new 得到对象的处理权 ,而实 际分配给对象的内存可能 随程序运行而改
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。