基于java的cs模式网络聊天室的_第1页
基于java的cs模式网络聊天室的_第2页
基于java的cs模式网络聊天室的_第3页
基于java的cs模式网络聊天室的_第4页
基于java的cs模式网络聊天室的_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华中科技大学文华学院华中科技大学文华学院 毕毕业业设设计计 论论文文 题目: 基于 java 的 C/S 模式网络聊天室的设计 学 生 姓 名: 学号: 学 部 (系): 专 业 年 级: 指 导 教 师: 职称或学位: 2009 年 6 月 1 日 2 目目 录录 摘摘 要要.I ABSTRACTII 1 1 绪绪 论论.1 1.1 聊天室的发展.1 1.2 即时通讯的应用.2 1.3 各类通讯软件的介绍和比较3 2 2 实现聊天室的实现聊天室的相关技术及环境相关技术及环境.7 2.1 JAVA概述 .7 2.2 TCP/IP 协议常识9 2.3 系统开发工具与开发环境11 2.3.1 开发工具 .11 2.3.2 开发环境 .11 3 3 网络聊天系统的系统设计网络聊天系统的系统设计.12 3.1 项目概述12 3.2 功能需求12 3.3 系统建摸13 3.4 聊天室系统的设计 .14 3.4.1 聊天系统工作原理图 14 3.4.2 系统实现原理 .15 3.4.3 系统的设计过程 .15 3.5 数据封装设计18 4 4 聊天系统的实现及测试聊天系统的实现及测试.19 4.1 系统用户界面设计19 4.1.1 客户端界面 .19 4.1.2 服务器界面 .21 4.2 系统设计22 4.2.1 客户端结构 .22 4.2.2 服务器端结构 .23 4.3 客户端功能实现的测试24 参考文献参考文献.31 致致 谢谢.32 I 摘摘 要要 网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习 面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网 络聊天室。 本毕业设计介绍 Java 语言设计与实现一个网络聊天室过程,本系统采用 C/S 构架 设计,整个项目分为服务器端和客服端。使用了新的 Java2 标准 Swing 组件,开发出 简洁美观和布局合理的用户和服务器界面;利用 Socket 网络开发技术实现客户端和服 务器端的连接访问,实现网络功能;通过数据流操作的合理设计,实现信息传递、接 收和数据保存。同时,采用多线程、多任务的 设计思想,开发出性能稳定,功能全面 的服务器。完整的实现系统的功能。 通过本次毕业设计可以学到如何应用和实现面向对象的各种方法,如何使用 Eclipse 集成开发环境来创建和开发项目,从而完成系统的完整开发。 关键字关键字:聊天室;Java;Socket; C/S ;UDP;多线程 II Abstract The network chat room is a kind of applied extensive network chat method ,operate in ease and the function is abundant, It can be used as a good case for learning of java design language and the Object-Oriented Programming language, there is many programming language of design to develop a network chat room with perfect function. This graduation thesis of design introduction how to use the java language design and carry out network chat room, the system adoption the C/S structure design, the whole system is divided into the server and client. Use standard modules of Swing of latest java2, develop a simple and direct beauty user interface, We make use of the Socket technology to interconnect the server and client by net-work; organize the data by good design of data stream to sent or accept the message between users and to record the message for ever, we also use the multi-thread multi-action to make the program with many function. I have leaned many method and things to use the Object-Oriented programming. And make me know how use the development environment Eclipse to new program and the process to make the program. Key Words: ChatRoom; Java; Socket; C/S;UDP; multi-thread 1 1 绪 论 网络技术是计算机领域中发展最为迅速的技术之一,它在政治、经济、生活等各 个方面发挥着十分重要的作用。随着计算机网络的普及和推广,将会有越来越多的人 利用网上资源,享受不断发展和完善的网络服务,以此来提高工作效率和水平。随着 我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序 设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机 应用设计开发的主流,尤其在网络技术开发中,面向对象的 Java 语言编程和相关的 Java 技术正在以前所未有的速度发展。网上购物、网上银行、远程教学、网络聊天、 网络游戏等都开始使用 Java 技术。而且 Java 使平台无关性的思想成为现实,独立的 Java 程序可以被编译为与平台无关的字节码,这种字节码可以运行在任何拥有 Java 解 释器的机器上。 真正降低了企业成品和程序员的负担。 随着信息科学的进步与互联网络的发展,虽然通过网络的聊天软件很多,但针对 于内部系统的、局域网内的聊天和公司内部的上下级沟通的聊天通讯软件却很少。所 以开发一个此类型的即时通讯系统就变得非常有意义了。而在技术选择上 Java 技术自 然成为实现此系统的首选。 1.11.1 聊天室的发展聊天室的发展 聊天室做为即时通讯的一种,即时通讯(Instant Messenger,简称 IM)软件可以 说是目前我国上网用户使用率最高的软件,无论是老牌的 ICQ,还是国内用户量第一的 腾讯 QQ,以及微软的 MSN Messenger 都是大众关注的焦点,它们能让你迅速地在网上 找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少 IM 软件还集成 了数据交换、语音聊天、网络会议、电子邮件的功能。 IM 软件的历史并不久远,但是它一诞生,就立即受到网民的喜爱,并风靡全球。 在它的发展史上,以色列人是功不可没的。正是四位以色列籍的年轻人,在 1996 年 7 月成立的 Mirabilis 公司,并于同年 11 月推出了全世界第一个即时通讯软件 ICQ,取 意为“我在找你”“I Seek You”,简称 ICQ 了。直到现在,ICQ 已经推出了它的 2002a 版本,在全球即时通讯市场上占有非常重要的地位。 目前,国内最为流行的即时通讯软件是 OICQ(简称 QQ)。它以良好的中文界面和 不断增强的功能形成了一定的 QQ 网络文化。Messenger 虽出道较晚,但依托微软的强 大背景,实力也不可小视。作为 Windows XP 的一部分,Messenger 整合了操作系统的 许多功能,如多种形式的聊天选择、多人的单窗口讨论式交流以及充分的文件与桌面 2 共享功能等。它的令人耳目一新的中文界面和注册方式,连同它强大的功能,着实吸 引了众多的眼球的注视,此外还有许多有特点的 IM 软件。 1.2 即时通讯的应用 即时通讯软件除了可以实时交谈和互传信息,不少还集成了数据交换、语音聊天、 网络会议、电子邮件的功能。下面介绍的即时通讯软件的主要应用功能: 文字聊天 聊天功能是 IM 软件最基本、也是最重要的功能,基本上每一种 IM 软件在这个功 能上的操作都差不多:如果用户想与联系人进行聊天,可以双击 IM 中联系人的头像, 在弹出的对话框中敲入文字信息发送即可。QQ 的特点是可以给不在线的朋友发送信息, 对方下次上线的时候可以收到,MSN 虽然不具备这样的功能,但是它在聊天过程中可以 使用各种漂亮的表情图标为聊天添加了不少情趣。 语音聊天 如果打字聊天的方式已不能满足,QQ 还提供了“二人世界”里的实时语音聊天, 首先您得有音箱或者耳机、麦克风,然后就可以向您的网友发送连接到“二人世界” 的请求,通过后双方不仅可以用文字聊天,还可以直接讲话。此外 QQ 还有传送语音功 能利用此功能可以传送语音信息。首先用鼠标左键单击在线好友的头像,选择“传递 语音”命令,然后就会弹出一个对话框,录音以后就可以发送了。 传送文件 IM 软件能点对点的传输文件,有时候利用此功能要比使用 E-mail 还方便许多,当 然此项功能必须在对方在线时才能使用。在 QQ 的好友头像上点击右键,选择“传送文 件”,选定要传送的文件,点击发送,等待对方接受请求。此外,ICQ 的文件传送功能 还支持类似断点续传的功能,不必担心文件传送过程中发生突然中断的情况。 拨打电话 在 MSN Messenger 中提供了 PC-PHONE 的拨打电话功能,你可以在 MSN Messenger 软件主窗口中,单击操作窗口“我想”下面的“拨打电话”或者用鼠标右键单击要呼 叫的人的名字,单击“拨打电话”,就可以开启拨叫电话功能。但在进行电话呼叫之 前必须注册语音服务提供商。由于 MSN Messenger 在国内暂时还没有开通这项业务, 所以我们还无法使用。 远程协助 远程协助是在 Windows XP 中引进的新概念,是 Windows Messenger 独有的功能, 远程协助可以将电脑的控制权分享给对方以便于对寻求协助者提供帮助,通过它,对 方可以很容易地控制寻求协助者的桌面。它的功能主要体现在应用程序共享、远程协 助、白板共享、寻求远程协助等方面。由于这一功能非常强大,在寻求协助的过程中 3 系统会多次提醒并给出选择,请用户在使用这一功能时多加小心,确认对方是否可靠。 视频聊天 如果你的网速够快,又有摄像头的话,完全可以用 IM 软件来代替掉 Netmeeting 了,在聊天的同时,不仅可以通话,还可以看到对方的图像,表情,备感亲切,给您 带来一份全新的感受。Windows Messenger 对视频聊天功能支持的不错,设置和使用也 非常简单,右击好友中“开始视频对话”就完成操作,非常方便。 邮件辅助 IM 和 E-mail 是我们在网上最常用的两种工具,如今不少 IM 软件将两者作了完美 的结合。在 QQ 中你可以直接给自己的好友发邮件,而无须再输入 E-mail 地址;此外 对于自己的信箱 QQ 还有检查新邮件功能,在“系统参数”中设置您自己的 E-mail,填 好 POP3 地址,您可以选择定时检查时间,QQ 就会自动检查有否新邮件到达。对于 MSN Messenger 来说它的邮件功能就更强大了,使用 MSN Messenger 你必须有一个邮件账号, 每次当您的 MSN Messenger 登录成功时,在右下角自动弹出一个窗口,里面写有该 E- mail 账户内的信件状况,在使用过程中如果您的邮箱中有了新邮件,马上会冒出一个 提示窗。 发送短信 目前 IM 与各种移动终端设备的结合也越来越多。使用 QQ 向手机发送短信需要手 机开通移动 QQ 服务,单击对方头像图标,在打开的快捷菜单中选择“手机短讯”命令, 在打开的对话框中输入信息,然后点击发送即可完成,这时对方的手机就可以收到一 个消息。给 BP 机发短讯也是一样,不过对方的 BP 机服务台必须是 QQ 所支持的情况下 才行。当对方的手机收到你发来的短信后还可以回复,这时候您的 QQ 会弹出“查看手 机短讯”的窗口来,非常方便。 浏览咨询 有的朋友上网只是使用 QQ 聊天,其实用 QQ 也可以很方便的看到每日最新的新闻。 点击 QQ 面板中的“资讯通”按钮,瞧,“资讯通”已经为您订制好新闻啦:“新闻”、 “IT 科技”、“证券”、“体育”、“娱乐”共十二大类新闻信息。你愿意看哪 方面的新闻,就点击相应的图标,则出现“资讯通”界面,自动提取出当日新闻标题。 通过这些标题,你可以快速地选择出自己感兴趣的新闻,点击之就可以调用浏览器读 取了。这样您就可以足不出户阅读有关内容,节省了您的查找时间、提高了浏览效率。 4 1.3 各类通讯软件的介绍和比较 各种即时通讯软件,真可谓“尺有所短,寸有所长”!ICQ 功能最强大,全球用户 最多,但是设置比较复杂,而且没有中文版本;MSN 有着和 Windows 系统紧密结合的优 点;QQ 则依托自己强大的本地优势,在国内即时通讯软件中抢占了先机。 “小企鹅”与“巨人新星” 1、即时消息的发送 这是作为即时通讯软件的最基本的功能。从发送消息的长短来看:QQ 一次最多可 发送 450 个汉字,而 MSN 最多也只有 400 个字符(200 个汉字);同为中文界面的 QQ 与 MSN,却采用了完全不同的设计思路。从界面上来看,QQ 采用“对话模式”和“普 通模式”两种(如图 1)。而 MSN 中只有一种方式。对于用惯了 QQ 的网友来说,可能 会将一句并没说完的话发送出去,而按下“Ctrl+回车”仅仅是起换行作用。从发送字 符格式的控制上,MSN 无疑是占尽上风,不仅支持字体、字号大小以及字色的设置,这 一点普通网友或许并不多用,但 MSN 能够将诸如“:)”之类的图示符号自动转换为 “笑脸”等表达心情和表情的图形,这点功能的确是非常棒的一种设计。 2、记录的保存和再现 这一点是 QQ 的强项。几乎不用做任何动作,与所有网友的聊天记录都被完整地保 存,只要你不去清理它,完全可以把两年前与 MM 聊天时 MM 的承诺重现在 MM 面前,不 怕 MM 不招!呵呵。而 MSN 在这点上是先天的缺陷。要想保存,就自己一边聊一边慢慢 地“Copy”吧。 3、用户的注册和好友的添加 由于腾讯的用户量急剧增加,使得 QQ 的新用户 ID 申请变得异常困难。腾讯转而 向移动通讯用户开放这一通道,尽管在功能的延伸方面取得了成功和突破,却因此也 “激怒”了广大的网友!同时,添加好友异常方便,也使得我们自己的 QQ 上经常无端 地收到许多莫名其妙的广告或垃圾信息以及一些“不受欢迎”的网友的“入侵”!而 MSN 与众不同的注册设计,加上 Hotmail 和 MSN.com 两大免费邮箱的隆重推出,使得我 们的 MSN 可以非常清静! 4、其他功能比较 QQ 和 MSN 都有语音聊天、文件传输、启动 NetMeeting 进行视频聊天等功能,QQ 在语音音质、传输速度等方面略逊一筹,但总体功能设计上差别不大。但 QQ 独有的卡 通人物头像的绝妙创意,是任何一款即时通讯软件也无法与之媲美的。 不仅如此,腾讯还形成了自己完整的企业文化,像各种各样的 QQ 玩偶、手表、T 恤、背包、钥匙链等应有尽有,网上销售再加上全国数十家 Q-GEN 专卖店以及与移动 厂商的合作等工作都进行得红红火火,而这些都是时间沉淀积累的结果,初来乍到的 MSN 应该是无法比拟的。而 MSN 也以其方便的消息群发(单击“我要”下的“邀请 5 他人加入该聊天”)和强大的资本和技术上的优势,完全有能力和可能继续向 QQ 发起 新一轮的攻击。 “三朝元老”与“巨人新星” ICQ 与 MSN 放在一起比较,的确很有意思。一个是即时通讯领域的“大哥大”,另 一个是软件业的“巨无霸”,即时通讯领域的后起之秀。从功能上看,MSN 目前显然无 法与 ICQ 相抗衡。但 MSN 借助与操作系统的无缝结合,任何人都不敢对它无礼和小视。 1、分组支持情况 两者都支持对好友进行分组,且都有两种模式,即组模式和状态模式。两个软件 的组模式几乎相同,都是以组为主进行分类排序,即首类为组,每个组的下面再按在 线和离线两种情况分类。所不同的是,ICQ 的默认组只有一个,而 MSN 则提供了四个默 认组:家人、朋友、同事及其他联系人。ICQ 的默认组可以重新命名但不能删除;MSN 默认组中“其他联系人”既不能重命名也不能删除,其他三组则都允许。 2、消息群发功能 MSN 与 ICQ 都有消息群发功能。但 MSN 只能通过“邀请其他联系人加入”的方式进 行,而且有最多加入四人(共五人)的限制。但 ICQ 的消息群发功能却很强大。在对 话模式下,单击“Multiple”即可展开所有好友的列表。没有人数限制,也没有在线 与否的限制(如图 2)。 3、其他功能比较 任何一款免费软件的使用过程中,都会被强制地安插进一些广告内容,ICQ 也不例 外。对于这一点,财大气粗的微软做得很好。无论是 Windows XP 中捆绑的 MSN,还是 网上免费下载的,几乎看不到广告的影子。另外,即使在最新的 ICQ2002a 中,似乎仍 然不能支持网络摄像机和视频聊天等功能,而这些功能在即时通讯领域几乎成了必备 的功能。不过,ICQ 中强大的查找好友功能,使你只需记住好友的哪怕是一点点信息, 就可以轻松找到这位好友,令任何一款即时通讯软件都望尘莫及(如图 3)。新版 2002a 中还新增了服务器保存好友信息的功能,使得在世界任何一个角落都可以及时方 便地与好友进行联络。 其他产品简介 在即时通讯领域还有许多另类(非主流)的产品。如 AOL Internet MSN、Yahoo! MSN(雅虎通)、SinaPager(新浪寻呼)、Sohu 我找你、网易“口对口”、诺斯 TICQ 、梦幻寻呼(DICO)、OMMO、V2 Communicator、8dCall 等等。因为它们的用户群相对 较小,所以容易为人们忽视。但它们除了具备即时通讯的基本功能之外,都各有各的 特点。这里只是挑选部分列举一下它们各自的特色功能: 1、雅虎通(Yahoo MSN):用户可以通过它在线查询股票、新闻、体育记分板、 天气、旅游等各方面的信息;还可以享受到雅虎网站的各种个性化服务,包括:查阅 6 来信、效率手册、获得股票报价、在线购物、拍卖投标、查询分类广告、访问俱乐部、 玩游戏、和朋友聊天、阅读征友广告等等。 2、网易“口对口”:可以显示各种类型网页受欢迎的程度(点击率)。这样,你 可以依靠访问量的大小来找到最受欢迎的网页(如图 4);可以通过在右下角正确的设 置自己的四类状态(“我的意图”、“我的可见度状态”、“我的表情”和“我的状 态),来充分展示自己的形象;可以即时了解自己的主页点击情况。方法是:点击 “工具”菜单下的“主页观察站”,弹出设置主页 URL 窗口。输入自己网站的网址, 设定好之后,每当你开启网易口对口时,主页观察站就会自动弹出。窗口中显示当前 浏览该网页的用户人数(可见与不可见),以及在该页上的留言数目。 3、SinaPager(新浪寻呼):网上留言功能如果您的朋友没有上网,您可以 方便地用中、英文给他留言,他只要使用浏览器就可以看到您的留言了;类似翻译软 件的浮动条的设计(如图 5),可有效节约屏幕空间;与新浪网站、新浪电子邮件等紧 密的结合功能。 4、 诺斯 TICQ:定制新闻当主机端新闻更新时,你就可以在滚动条里看到最 新的新闻了;自动弹出短讯/消息滚动可以让消息在滚动条中滚动显示;查看笑话 不时在屏幕上弹出一则笑话,令人捧腹大笑;定时闹钟可以指定时间让系统 自动把设定的信息内容发送给你的网友,或者提醒自己该干的事情;断点续传传 送文件的功能几乎所有的即时通讯软件都具备。具备“断点续传”功能的即时通讯软 件还真不多见,TICQ 就是这样一款软件。 5、梦幻寻呼(DICO):邮件群发功能;丰富的插件使得我们可以聊天娱乐两不误 (如图 6);方便清晰的语音聊天功能能够穿透防火墙,达到电话的音质效果;个 人 Web 服务可以把你的个人电脑轻松设置成一个 Internet Web 服务器,让网友到 你的硬盘上浏览你的个人主页。 6、酷 8d 网络伙伴(8dCall):“听声辨人”可以以不同音效通知好友上线或来 信;股票成交消息实时回报只要你是 8dCall 的会员,只要你的下单券商提供 8dCall 股票成交回报功能,不论你采用哪种方式进行股票交易(电话、柜台、网络等), 都可以实时得到股票成交回报的消息;线上免费传呼使用 8dCall 可以免费传送中 文、英文或数字到好友或合作伙伴的传呼机上。 7 2 2 实现聊天室的实现聊天室的相关技术及环境相关技术及环境 2.1 Java 概述 1、背景 最近一年多来 ,在 Internet 上出现的特别吸引人的事件就是 Java 语言和用 Java 编写的浏览器 HotJava。 1991 年 ,SUN MicroSystem 公司的 Jame Gosling、 Bill Joe 等人 ,为在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发 了一个名为 Oak 的软件 (即一种橡树的名字 ),但当时并没有引起人们的注意 ,直到 1994 年下半 年 ,Internet 的迅猛发展 ,环球信息网 WWW 的快速增长 ,促进了 Java 语言研制的 进展 ,使得它逐渐成为 Int ernet 上受欢迎的开发与编程语言 ,一些著名 的计算机 公司纷纷购买了 Java 语言的使用权 ,如 Mi-croSoft、 IBM、 Netscape、 Novell、 Apple、 DEC、 SGI 等 ,因此 ,Java 语言被美国的著名杂志 PC Magazine 评 为 1995 年十大优秀科技产品 ,(计算机类就此一项入选 ),随之大量出现了用 Java 编 写的软件产品 ,受到工业界的重视与好评 ,认为 “Java 是八十年代以来计算机界的一 件大事 “,微软总裁比尔盖茨在悄悄地观察了一段时间后 ,不无感慨地说 :“Java 是 长时间以来最卓越的程序设计语言 “,并确定微软整个软件开发的战略从 PC 单机时代 向着以网络为中心的计算时代转移 ,而购买 Java 则是他的重大战略决策的实施部署。 因此 ,Java 的诞生必将对整个计算机产业发生深远的影响 ,对传统的计算模型提 出了新的挑战。SUN MicroSystem 公司的总裁 Scott McNealy 认为 Java 为 Internet 和 WWW 开 辟了一个崭新的时代。 环球信息网 WWW 的创始人 Berners-Lee 说 :“计算 机事业发展的下一个浪潮就 是 Java,并且将很快会发生的“。 看来 ,使用 Java 已成 大势所趋 。 MicroSoft 和 IBM 两大公司都计划在 Internet 上销售用 Java 编写的软件。 Apple、 HP、 IBM、 MicroSoft、 Novell、 SGI、 SCO、 Tandem 等公司均 计划将 Java 并入各自开发的操作系统 ,而负责开发并推广 Java 技术的 SunSoft 公 司 (这是 SUN 下属的一个子公司 ),将通过颁发许可证的办法来允许各家公司把 Java 虚拟机和 Jav a 的 Applets 类库嵌入他们开发的操作系统 ,这样各类开发人员 就能更容易地选 择多种平台来使用 Java 语言编程 ,不同的用户也就可以脱离 Web 浏览器来运行 Java 应用程序 ,这无疑是很受广大用户欢迎的 ,也为 Java 语言的应 用开拓了极为广阔的 前景。 (当然 ,各类 JavaOS 之间的兼容性必须得到重视 ,好在 JavaSoft 已保证将监 督这种兼容性 )。 另外 ,由 JavaSoft 推出的完全用 Java 编写的 Internet 上新型浏览器 HotJava, 比去年 alpha 版更为实用 ,不仅能编制动态的应用软件 ,而且能编制完整的成套桌面 8 应用软件 ,将来还会提供更多的能帮助编制动态应用软件的模块 ,显然 ,这也是为 Java 的应用提供了有力的例证。 今年 6 月 7 日 ,由 SUN 公司和台湾经济事务部信息发展局、台湾信息技术研究所 等单位牵头 ,成立了一个“Java 联盟 “,参加的有 22 个在台湾相当著名的计算机公司 ,并 在台北建立一个 “Java 开发中心 “,在新竹建立一个“Java 语言实验室“,以掀起台湾开 发与应用 Java 语言的热潮。 香港则在今年 4 月就举行了全岛的 Java 杯比赛 ,在计算机界掀起了学习 Java 的 热潮 (尤其是在大学生们中 ,出现了一批 Java 迷 )。 有人预言 :Java 将是网络上的 “世界语 “,今后所有的用其他语言编写的软件统统 都要用 Java 语言来改写。 2、Java 语言对软件开发技术的影响 工业界不少人预言 :“Java 语言的出现 ,将会引起一场软件革命 “,这是因为传统 的软件往往都是与具体的实现环境有关 ,换了一个环境就需要作一番改动 ,耗 时费力 ,而 Java 语言能在执行码 (二进制码 )上兼容 ,这样以前所开发的软件就 能运行在不同 的机器上 ,只要所用的机器能提供 Java 语言解释器即可。Java 语言将对未来软件的 开发产生影响 ,可从如下几个方面考虑 : 1 软件的需求分析 :可将用户的需求进行动态的、可视化描述 ,以提供设计 者更加直观的要求。而用户的需求是各色各样的 ,不受地区、行业、部门、爱好 的 影响 ,都可以用 Java 语言描述清楚。 2 软件的开发方法 :由于 Java 语言的面向目标的特性 ,所以完全可以用 O-O 的技术与方法来开发 ,这是符合最新的软件开发规范要求的。 3 Java 语言的动画效果远比 GUI 技术更加逼真 ,尤其是利用 WW W 提供的巨大 动画资源空间 ,可以共享全世界的动态画面的资源。 4 软件最终产品 :用 Java 语言 开发的软件可以具有可视化、可听化、可操 作化的效交互、动画与动作 “,要它停就停 ,要它继续就继续 ,而这是在电影与电 视播放过程中难以做到的。 5 其它 :使用 Java 语言对开发效益、开发价值都有比较明显的影响。 3、应用前景 Java 语言有着广泛的应用前景 ,大体上可以从以下几个方面来考虑其应用 : 1 所有面向对象的应用开发 ,包括面向对象的事件描述、处理、综合等 ; 2 计算过程的可视化、可操作化的软件的开发 ; 3 动态画面的设计 ,包括图形图像的调用 ; 4 交互操作的设计 (选择交互、定向交互、控制流程等 ); 5 Internet 的系统管理功能模块的设计 ,包括 Web 页面的动态设计、管理 和交互操作设计等 ; 9 6 Intranet(企业内部网 )上的软件开发 (直接面向企业内部用户的软件 ); 7 与各类数据库连接查询的 SQL 语句实现 ; 8 其它应用类型的程序。 4、Java 的特点 Java 语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、 体系结构中立、可移植、高性能、多线程以及动态性。 2.2 TCP/IP 协议常识 (1) TCP/IP 协议的特点: TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议 /网际协议的缩写, TCP/IP 是当今网络互联的核心协议。TCP/IP 协议的体系结构共有 四个层次,即应用层、传输层、网络互联层和网络接口层。 IP 协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。 第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元, 提供了供路由选择的信息,没有差错校验和处理的机制。 TCP 协议的功能:差错控制可靠性、面向连接、分段(Segment)、端口号。 TCP 是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动 窗口机制来保证传输的可靠性,及进行流量控制。 TCP/IP 协议具有以下特点: 1、协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。 2、统一分配网络地址,使得每个 TCP/IP 设备在网络中都具有唯一的 IP 地址。 3、实现了高层协议的标准化,能为用户提供多种可靠的服务。 (2)TCP/IP 协议进行传输数据传输的过程: 应用程序为了传输数据会调用 TCP,将数据和对应的参数传给 TCP,将 TCP 数据包 封装在 IP 包内,通过网络送给目的 TCP。接收方 TCP 在接收到数据后通知上层应用程 序,TCP 将保证接收数据的正确性。在实现 TCP 的主机上,TCP 可以被看成是一个模块, 和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP 不直接和网络打交道, 控制网络的任务由专门的设备驱动模块完成。TCP 只是调用 IP 接口,向 TCP 提供所有 TCP 需要的服务。 (3)端口号: 有的时候,一个 ip 地址不能完整的标识一台服务器,这是应为一台物理性的计算 机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以 就在传输层和应用层上设置接口,就是端口。端口实际是一个 16 位长的 地址,他的 10 范围是 065535 之间,其中 01023 是熟知端口,主要是给提供服务的应用程序使用, 这些端口是所有应用进程都只道的,102465535 为一般端口,也称动态端口、连接端 口,用来随时分配要求通信的个客户端应用程序。在数据传输过程中,各种服务器不 断的检测分配给他的端口,一边发现要求和他通信的客户端。 (4)Socket 的简介 Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上 两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字, 套接字是在比较低的层次上通信的。 具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求, 当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户 端被分配一个本地端口与一个 socket 建立连接,客户端通过写 socket 来通知服务器, 以读 socket 中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来 侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个 socket,通过 读写和客户端通信。 Socket 程序的工作过程,如图 2.1 所示: 1、建立 Socket 连接:在通信开始之前由通信双方确认身份,建立一条专用的虚 拟连接通道。 2、数据通信:利用虚拟连接通道传送数据信息进行通道。 3、关闭:通信结束时,再将所建的虚拟连接拆除。 图 2.1 客户机/服务器 socket 通讯的工作模式图 第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧。 第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连 接序号和源端机连接序列号的确认。 1 服务器 socket 2 监听 4 接收 5 读 6 写 7 关闭 3 客户端 socketsocket 6 写 5 读 7 关闭 11 第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个 带有两次连接的序列号的确认。 具体的三次握手过程,如图 2.2 所示。 主机 A 主机 B 图 2.2 三次握手 2.32.3 系统开发工具与系统开发工具与开发环境开发环境 2.3.1 开发工具 基于 JAVA 聊天系统的设计主要运用 JAVA 与语言与 Socket 类结合而开发。其开发 的主要环境包括: 服务器端:(Windows 平台)首先应有 java 环境 jdk,建议采用 jdk1.5 以上,另 外还需配置 classpath 环境变量,本系统开发工具为 MyEclipse5.5; 客户端:只要有 java 环境 jdk 就可以,建议 jdk1.5。 2.3.2 开发环境 本系统运行环境所需用到的环境为: 硬件配置 : 中央处理器(CPU) :P4 2.0G 的处理器; 硬 盘:40GB 以上硬盘; 内 存:512 DDR 内存; 显示器:17 寸显示器等; 显 卡:128M 显存显卡 软件环境:WINDOWS XP、Eclipse、jdk1.6.03 等 ACK=1 第一次握手,主机 A 向 主机 B 发送连接请求 第二次握手,主机 B 收到主机 A 的请求,向主机 A 回发一个确认, ,同时向主机 A 发送一个连接请 求 第三次握手,主机 A 收 到主机 B 发送的数据包 在向主机 B 发送一个确 认连接 ACK=1,SYN=1,SEQ= aaaaaaaaaa SYN=1,SEQ= 12 3 网络聊天系统的系统设计 3.1 项目概述 人们日常生活中越来越多地使用这项新技术来为自己的工作和学习服务。一个操 作简单、友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流 作用。本聊天室,所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个 人用户可以通过网上聊天室将自己融入整个主流社会中。因此,在网上聊天室这个虚 拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅 历。 该聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室 中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室功能比较简单,但 是实现了聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很 遗憾传送文件、发送图片、视频聊天等尚未实现。 3.2 功能需求 一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个 服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界 面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用 户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现 一对一的私聊功能。 在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信 息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同 的响应,并且要实现数据库的操作,如根据用户注册的信息保存数据库中,根据登录 时发送来的用户名和密码检测是否合法用户等。 客户端功能模块图如图 3.1 所示: 用户注册功能,实现用户的登陆 ID 注册和个人信息,并存入服务器数据库中。 用户登录功能,实现合法注册用户的登陆。 私聊功能,实现用户和在线的其他用户一对一的聊天方式。 公聊功能,实现用户和在线的所有用户聊天方式。 显示时钟功能。 查看聊天记录,实现用户查看已聊天的历史聊天内容。 13 发送表情和设置聊天内容字体,并可以设置字体颜色和背景色等。 过滤用户聊天中的不文明用语 图 3.1 客户端结构图 服务器端功能模块图如图 3.2 所示: 可以不断的监听客户端请求 显示登陆客户的信息、当前在线人数、服务器开启状态、保存日志、用 户在线列表 发送系统消息 踢人 图 3.2 服务器端结构图 服务器端 服务器管理 用户信息管理 监 听 请 求 显 示 登 录 状 况 关 闭 服 务 器 当 前 在 线 人 数 服 务 器 名 称 服 务 器 IP 服 务 器 端 口 保 存 日 志 用 户 信 息 在 线 用 户 列 表 踢 人 发 送 系 统 消 息 客户端 登陆 记录保存 通讯 功能设置 用 户 登 录 用 户 注 册 公 聊 私 聊 字 体 颜 色 字 体 大 小 字 体 类 型 表 情 时 钟 聊 天 记 录 过滤 不文 明用 语 14 3.3 系统建摸 在聊天室的分析过程中,明确了系统主要有两类角色(Actor)及相关用例 系统管理员:系统管理员维护聊天室系统得所有信息,包括用护户管理、配置服 务器参数等。 普通用户:普通用户可以使用系统进行聊天室服务,包括:注册用户名、登录服 务器,聊天发言、退出聊天室等 根据前面的分析,得到了聊天室系统的用例(UseCase)图。如图 3.3 所示为整个 系统的用例图。 图 3.3 系统的总体用例图 User 离开 聊天室管理 注册 发言 系统参数维护 登陆 踢人 管理员 15 3.43.4 聊天室系统的设计聊天室系统的设计 3.4.1 聊天系统工作原理图 图 3.4 聊天系统工作原理图 3.4.2 系统实现原理 当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行 封装,然后与服务器建立 Socket 连接,再用对象输出流包装 Socket 的输出流将聊天 信息对象发送给服务器端。 当用户发送聊天信息时,服务端将会收到客户端用 Socket 传输过来的聊天信息对象, 然后将其强制转换为 Chat 对象,并将本次用户的聊天信息对象添加到聊天对象集 Message 中,以供所有聊天用户访问,具体实现过程如图 3.5 所示。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务 器上是否有最新消息,在本程序中设定的是 3 秒刷新服务器一次,如果间隔时间太短 将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所 以经过权衡后认为 3 秒最佳,因为每个用户都不可能在 3 秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性 化地显示在聊天信息界面上。 Server 建立服务器端 Socket 等待并接收请求 接收请求后创建并连接 Socket OutputStream InputStream 关闭Socket Client 创建连接Socket向服 务器发送请求 OutputStream InputStream 关闭Socket 建立连接 开始通信 结束通信 16 图 3.5 系统实现原理 3.4.3 系统的设计过程 (1) 用户的登录/退出 用户发送登录请求,客户端获取用户登录信息并发送到服务器端,服务器启动用 户登录管理线程,获取用户名和密码进行登录验证,将验证结果返回客户端显示,如 图 3.6 示为普通用户登录/退出系统的时须图。 图 3.6 普通用户登录/退出系统时得时序图 程序客户端 顶层包::User 程序服务器端 用户数据 发送登陆请求 获取用户信息 建立连接 连接成功 发送登录信息 获取登录信息 查询用户信息 用户信息 验证用户信息 返回验证结果 显示验证结果 17 (2)用户注册 用户第一次进入聊天室时需要进行用户注册才能登陆聊天室聊天。注册流程如下: 用户提出注册请求,客服端响应,弹出注册信息对话框,用户输入相关信息并提交, 客户端首先进行合法检查,确定无误后将数据信息发送给服务器端。服务器接收到请 求后,启动单独得线程进行处理,首先进行合法性检查,确认登录名与系统中已注册 得用户登陆名不相同后更新数据,并返回信息,客服端进行显示。如图 3.7 所示为用 户注册的时序图。 程序客户端 顶层包::User 程序服务器端用户数据 发送请求 获取用户注册信息 创建新用户 返回用户ID 发送注册信息 获取注册信息 查询用户信息 返回查询结果 验证用户信息的合法性 返回验证结果 显示验证结果 验证注册信息 初步验证成功 检测是否重复 验证成功 返回ID 显示结果 18 图 3.7 用户注册的时序图 (3)发言 发言是聊天室的核心功能,用户提出发言请求,客户端接受发言的内容和其他各 种设置(公聊或私聊),打包发给服务器端。服务器接收到请求后确定聊天方式。服务 结果最后显示在客户端。如图 3.8 所示为发言的时序图。 程序客户端1 顶层包::User 程序服务器端 所有客户端 发送请求 获取发言注册信息和相关设置 返回操作结果 发送信息包 获取信息包 发送聊天室信息 发送操作结果 显示操作结果 信息打包 初步验证成功 解包 获得设置信息 19 图 3.8 发言的时序图 3.53.5 数据封装设计数据封装设计 现在需要将数据封装设计 E-R 图转化为能被实际数据库系统所支持的实际数据模 型。 Customer.java 对登陆的用户进行封装,包括:用户名 密码,用户头像。 Register_Customer.java 对注册信息进行封装,包括:用户名,密码,性 别,年龄,电子邮箱,用户头象。 Message.java 对服务器端消息进行封装,包括:用户在线对象集,聊天信 息集,被踢者姓名,公告。 Chat.java 对客户端信息进行封装,包括:发言人用户名,聊天内容接受对 象用户名聊天语气是否私聊。 Exit.java 对退出用户进行封装,包括:退出者用户名。 4 聊天系统的实现及测试 4.1 系统用户界面设计 界面是人机交互的窗口。用户界面接收用户的输入信息,并将程序执行的结果向 用户输出。良好的用户界面能够提升用户的工作效率,是系统得到更好的声誉。 根据用例可以制定出用户界面,包括:用户界面的功能、与用户交互的信息,以 及用户界面之间的切换关系等本聊天室,界面主要由 2 部分组成: (1)客户界面 (2)服务器界面 4.1.1 客户端界面 客户端界面主要包括:登陆界面、注册界面、聊天室界面。 客户端主要完成与服务器的连接和各种数据的传送,为聊天室用户提供良好的人 机界面。 20 用户要进入聊天室必须首先经过登录。聊天室的客户端登录界面如图 4.1 所示。 用户必须指定用户名。输入密码。以及服务器的地址以及端口。 图 4.1 登陆界面 用户第一次登录,需要注册,点击注册,将出现注册界面,如图 4.2 所示。 图 4.2 注册界面 用户通过服务器验证,登录成功,将出现聊天室界面,如图 4.3 所示。 21 图 4.3 聊天室界面 Java 服务器主要提供各种聊天室服务,包括数据转发,用户信息维护,信息维护, 其界面主要提供启动服务的功能,分为服务器管理和用户信息管理,如图 4.4 所示。 4.1.2 服务器界面 图 4.4 服务器管理界面 22 图 4.5 用户信息管理界面 4.2 系统设计系统设计 在将系统的界面设计完成时,就要开始进行系统的功能设计了,根据需求分析要求 将分两个部分来进行设计: (1)服务器端模块设计 (2)用户端模块设计 4.2.1 客户端结构 ChatClient.java 为客户端程序启动类,负责客户端的启动和退出。 Login.java 为客户端程序登录界面,负责用户帐号信息的验证与反馈。 Register.java 为客户端程序注册界面,负责用户帐号信息

温馨提示

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

评论

0/150

提交评论