




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目 基于 java 的 C S 模式网络聊天室的设计 目目 录录 摘摘 要要 I ABSTRACT II 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 摘摘 要要 网络聊天室是一种应用广泛网络聊天方式 操作简单 功能丰富 是教学和学习 面向对象的编程思想的理想项目 可以使用多种编程语言设计和开发出功能完善的网 络聊天室 本毕业设计介绍 Java 语言设计与实现一个网络聊天室过程 本系统采用 C S 构架 设计 整个项目分为服务器端和客服端 使用了新的 Java2 标准 Swing 组件 开发出 简洁美观和布局合理的用户和服务器界面 利用 Socket 网络开发技术实现客户端和服 务器端的连接访问 实现网络功能 通过数据流操作的合理设计 实现信息传递 接 收和数据保存 同时 采用多线程 多任务的 设计思想 开发出性能稳定 功能全面 的服务器 完整的实现系统的功能 通过本次毕业设计可以学到如何应用和实现面向对象的各种方法 如何使用 Eclipse 集成开发环境来创建和开发项目 从而完成系统的完整开发 关键字关键字 聊天室 Java Socket C S UDP 多线程 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 绪 论 网络技术是计算机领域中发展最为迅速的技术之一 它在政治 经济 生活等各 个方面发挥着十分重要的作用 随着计算机网络的普及和推广 将会有越来越多的人 利用网上资源 享受不断发展和完善的网络服务 以此来提高工作效率和水平 随着 我国经济发展和网络的普及 网络技术也越来越多地被应用于日常工作之中 在程序 设计领域 面向对象的编程技术正在逐步代替面向过程的程序设计技术 成为计算机 应用设计开发的主流 尤其在网络技术开发中 面向对象的 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 整合了操作系统的 许多功能 如多种形式的聊天选择 多人的单窗口讨论式交流以及充分的文件与桌面 共享功能等 它的令人耳目一新的中文界面和注册方式 连同它强大的功能 着实吸 引了众多的眼球的注视 此外还有许多有特点的 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 独有的功能 远程协助可以将电脑的控制权分享给对方以便于对寻求协助者提供帮助 通过它 对 方可以很容易地控制寻求协助者的桌面 它的功能主要体现在应用程序共享 远程协 助 白板共享 寻求远程协助等方面 由于这一功能非常强大 在寻求协助的过程中 系统会多次提醒并给出选择 请用户在使用这一功能时多加小心 确认对方是否可靠 视频聊天 如果你的网速够快 又有摄像头的话 完全可以用 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 科技 证券 体育 娱乐 共十二大类新闻信息 你愿意看哪 方面的新闻 就点击相应的图标 则出现 资讯通 界面 自动提取出当日新闻标题 通过这些标题 你可以快速地选择出自己感兴趣的新闻 点击之就可以调用浏览器读 取了 这样您就可以足不出户阅读有关内容 节省了您的查找时间 提高了浏览效率 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 也以其方便的消息群发 单击 我要 下的 邀请 他人加入该聊天 和强大的资本和技术上的优势 完全有能力和可能继续向 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 用户可以通过它在线查询股票 新闻 体育记分板 天气 旅游等各方面的信息 还可以享受到雅虎网站的各种个性化服务 包括 查阅 来信 效率手册 获得股票报价 在线购物 拍卖投标 查询分类广告 访问俱乐部 玩游戏 和朋友聊天 阅读征友广告等等 2 网易 口对口 可以显示各种类型网页受欢迎的程度 点击率 这样 你 可以依靠访问量的大小来找到最受欢迎的网页 如图 4 可以通过在右下角正确的设 置自己的四类状态 我的意图 我的可见度状态 我的表情 和 我的状 态 来充分展示自己的形象 可以即时了解自己的主页点击情况 方法是 点击 工具 菜单下的 主页观察站 弹出设置主页 URL 窗口 输入自己网站的网址 设定好之后 每当你开启网易口对口时 主页观察站就会自动弹出 窗口中显示当前 浏览该网页的用户人数 可见与不可见 以及在该页上的留言数目 3 SinaPager 新浪寻呼 网上留言功能 如果您的朋友没有上网 您可以 方便地用中 英文给他留言 他只要使用浏览器就可以看到您的留言了 类似翻译软 件的浮动条的设计 如图 5 可有效节约屏幕空间 与新浪网站 新浪电子邮件等紧 密的结合功能 4 诺斯 TICQ 定制新闻 当主机端新闻更新时 你就可以在滚动条里看到最 新的新闻了 自动弹出短讯 消息滚动 可以让消息在滚动条中滚动显示 查看笑话 不时在屏幕上弹出一则笑话 令人捧腹大笑 定时闹钟 可以指定时间让系统 自动把设定的信息内容发送给你的网友 或者提醒自己该干的事情 断点续传 传 送文件的功能几乎所有的即时通讯软件都具备 具备 断点续传 功能的即时通讯软 件还真不多见 TICQ 就是这样一款软件 5 梦幻寻呼 DICO 邮件群发功能 丰富的插件使得我们可以聊天娱乐两不误 如图 6 方便清晰的语音聊天功能 能够穿透防火墙 达到电话的音质效果 个 人 Web 服务 可以把你的个人电脑轻松设置成一个 Internet Web 服务器 让网友到 你的硬盘上浏览你的个人主页 6 酷 8d 网络伙伴 8dCall 听声辨人 可以以不同音效通知好友上线或来 信 股票成交消息实时回报 只要你是 8dCall 的会员 只要你的下单券商提供 8dCall 股票成交回报功能 不论你采用哪种方式进行股票交易 电话 柜台 网络等 都可以实时得到股票成交回报的消息 线上免费传呼 使用 8dCall 可以免费传送中 文 英文或数字到好友或合作伙伴的传呼机上 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 版更为实用 不仅能编制动态的应用软件 而且能编制完整的成套桌面 应用软件 将来还会提供更多的能帮助编制动态应用软件的模块 显然 这也是为 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 页面的动态设计 管理 和交互操作设计等 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 位长的 地址 他的 范围是 0 65535 之间 其中 0 1023 是熟知端口 主要是给提供服务的应用程序使用 这些端口是所有应用进程都只道的 1024 65535 为一般端口 也称动态端口 连接端 口 用来随时分配要求通信的个客户端应用程序 在数据传输过程中 各种服务器不 断的检测分配给他的端口 一边发现要求和他通信的客户端 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 关闭 第三此握手 源端机收到含有两次初始序列号的应答后 在向目的主机发送一个 带有两次连接的序列号的确认 具体的三次握手过程 如图 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 3 网络聊天系统的系统设计 3 1 项目概述 人们日常生活中越来越多地使用这项新技术来为自己的工作和学习服务 一个操 作简单 友好 运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流 作用 本聊天室 所谓聊天室就是一个可以让许多用户同时互相通信的网上园地 个 人用户可以通过网上聊天室将自己融入整个主流社会中 因此 在网上聊天室这个虚 拟的社会中 可以结交各层次各地方的朋友 从而为自己获取更多的知识和更多的阅 历 该聊天室是为许多喜爱上网聊天的朋友开发设计的 希望能在现有的众多聊天室 中给大家多一种的选择 和许多大型的网络聊天室相比该小聊天室功能比较简单 但 是实现了聊天的基本功能 点对多聊天 点对点聊天等 基于时间和技术的原因 很 遗憾传送文件 发送图片 视频聊天等尚未实现 3 2 功能需求 一个网络聊天室的运行 首先是要有一个完整稳定的服务器端 并且拥有很多个 服务器端 客服端要具有实现用户注册和用户登陆 在登陆成功后 要显示出公聊界 面 实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能 在新用 户上线和用户下线时要更新每个客户端在线用户列表名 并且可以和在线的用户实现 一对一的私聊功能 在服务器端可以实现不断的监听客服的连接 并且根据客户端发送过来的不同信 息如注册信息 登录信息 公聊信息 私聊信息 退出信息等 服务器端要做出不同 的响应 并且要实现数据库的操作 如根据用户注册的信息保存数据库中 根据登录 时发送来的用户名和密码检测是否合法用户等 客户端功能模块图如图 3 1 所示 用户注册功能 实现用户的登陆 ID 注册和个人信息 并存入服务器数据库中 用户登录功能 实现合法注册用户的登陆 私聊功能 实现用户和在线的其他用户一对一的聊天方式 公聊功能 实现用户和在线的所有用户聊天方式 显示时钟功能 查看聊天记录 实现用户查看已聊天的历史聊天内容 发送表情和设置聊天内容字体 并可以设置字体颜色和背景色等 过滤用户聊天中的不文明用语 图 3 1 客户端结构图 服务器端功能模块图如图 3 2 所示 可以不断的监听客户端请求 显示登陆客户的信息 当前在线人数 服务器开启状态 保存日志 用 户在线列表 发送系统消息 踢人 图 3 2 服务器端结构图 服务器端 服务器管理 用户信息管理 监 听 请 求 显 示 登 录 状 况 关 闭 服 务 器 当 前 在 线 人 数 服 务 器 名 称 服 务 器 IP 服 务 器 端 口 保 存 日 志 用 户 信 息 在 线 用 户 列 表 踢 人 发 送 系 统 消 息 客户端 登陆 记录保存 通讯 功能设置 用 户 登 录 用 户 注 册 公 聊 私 聊 字 体 颜 色 字 体 大 小 字 体 类 型 表 情 时 钟 聊 天 记 录 过滤 不文 明用 语 3 3 系统建摸 在聊天室的分析过程中 明确了系统主要有两类角色 Actor 及相关用例 系统管理员 系统管理员维护聊天室系统得所有信息 包括用护户管理 配置服 务器参数等 普通用户 普通用户可以使用系统进行聊天室服务 包括 注册用户名 登录服 务器 聊天发言 退出聊天室等 根据前面的分析 得到了聊天室系统的用例 UseCase 图 如图 3 3 所示为整个 系统的用例图 图 3 3 系统的总体用例图 User 离开 聊天室管理 注册 发言 系统参数维护 登陆 踢人 管理员 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 建立连接 开始通信 结束通信 图 3 5 系统实现原理 3 4 3 系统的设计过程 1 用户的登录 退出 用户发送登录请求 客户端获取用户登录信息并发送到服务器端 服务器启动用 户登录管理线程 获取用户名和密码进行登录验证 将验证结果返回客户端显示 如 图 3 6 示为普通用户登录 退出系统的时须图 图 3 6 普通用户登录 退出系统时得时序图 程序客户端 顶层包 User 程序服务器端 用户数据 发送登陆请求 获取用户信息 建立连接 连接成功 发送登录信息 获取登录信息 查询用户信息 用户信息 验证用户信息 返回验证结果 显示验证结果 2 用户注册 用户第一次进入聊天室时需要进行用户注册才能登陆聊天室聊天 注册流程如下 用户提出注册请求 客服端响应 弹出注册信息对话框 用户输入相关信息并提交 客户端首先进行合法检查 确定无误后将数据信息发送给服务器端 服务器接收到请 求后 启动单独得线程进行处理 首先进行合法性检查 确认登录名与系统中已注册 得用户登陆名不相同后更新数据 并返回信息 客服端进行显示 如图 3 7 所示为用 户注册的时序图 程序客户端 顶层包 User 程序服务器端用户数据 发送请求 获取用户注册信息 创建新用户 返回用户ID 发送注册信息 获取注册信息 查询用户信息 返回查询结果 验证用户信息的合法性 返回验证结果 显示验证结果 验证注册信息 初步验证成功 检测是否重复 验证成功 返回ID 显示结果 图 3 7 用户注册的时序图 3 发言 发言是聊天室的核心功能 用户提出发言请求 客户端接受发言的内容和其他各 种设置 公聊或私聊 打包发给服务器端 服务器接收到请求后确定聊天方式 服务 结果最后显示在客户端 如图 3 8 所示为发言的时序图 程序客户端1 顶层包 User 程序服务器端 所有客户端 发送请求 获取发言注册信息和相关设置 返回操作结果 发送信息包 获取信息包 发送聊天室信息 发送操作结果 显示操作结果 信息打包 初步验证成功 解包 获得设置信息 图 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 客户端界面 客户端界面主要包括 登陆界面 注册界面 聊天室界面 客户端主要完成与服务器的连接和各种数据的传送 为聊天室用户提供良好的人 机界面 用户要进入聊天室必须首先经过登录 聊天室的客户端登录界面如图 4 1 所示 用户必须指定用户名 输入密码 以及服务器的地址以及端口 图 4 1 登陆界面 用户第一次登录 需要注册 点击注册 将出现注册界面 如图 4 2 所示 图 4 2 注册界面 用户通过服务器验证 登录成功 将出现聊天室界面 如图 4 3 所示 图 4 3 聊天室界面 Java 服务器主要提供各种聊天室服务 包括数据转发 用户信息维护 信息维护 其界面主要提供启动服务的功能 分为服务器管理和用户信息管理 如图 4 4 所示 4 1 2 服务器界面 图 4 4 服务器管理界面 图 4 5 用户信息管理界面 4 2 系统设计系统设计 在将系统的界面设计完成时 就要开始进行系统的功能设计了 根据需求分析要求 将分两个部分来进行设计 1 服务器端模块设计 2 用户端模块设计 4 2 1 客户端结构 ChatClient java 为客户端程序启动类 负责客户端的启动和退出 Login java 为客户端程序登录界面 负责用户帐号信息的验证与反馈 Register java 为客户端程序注册界面 负责用户帐号信息的注册验证与反馈 ChatRoom java 为客户端程序聊天室主界面 负责接收 发送聊天内容与服务器端 的 Connection java 亲密合作 Windowclose 为 ChatRoom java 的内部类 负责监听聊天室界面的操作 当用户退 出时返回给服务器信息 Clock java 为客户端程序的一个小程序 实现的一个石英钟功能 Login java 类成员函数如表 4 1 所示 表 4 1 Login java 类成员函数表 函数名返回值功能 Login 无初始化登陆窗口 login 无登陆事件响应方法 actionPerformed ActionEvent 无按钮监听响应 ChatRoom java 类成员函数如表 4 2 所示 表 4 2 ChatRoom java 类成员函数 函数名返回值功能 ChatRoom 无构造方法初始化聊天室窗 口 run 无开启一个聊天室窗口线程 exitChatRoom 无退出聊天室 actionPerformed ActionEvent 无按钮监听响应 Windowclose无监听窗口关闭响应 clearMessage 无清屏 exit 无退出 Register java 类成员函数如表 4 3 所示 表 4 3 Register java 类成员函数 函数名返回值功能 ChatRoom 无构造方法初始化聊天室窗 口 run 无开启一个聊天室窗口线程 exitChatRoom 无退出聊天室 actionPerformed ActionEvent 无按钮监听响应 Windowclose无监听窗口关闭响应 clearMessa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年银行行业趋势分析招聘考试热点预测题及解析
- 2025年中级碳足迹评价师面试题集与答题技巧
- 全球法秩序重构-洞察及研究
- 跨平台兼容性-第1篇-洞察及研究
- 跌倒预防策略研究-洞察及研究
- 3D全彩打印技术-洞察及研究
- (2025年标准)加班折算工资协议书
- (2025年标准)农村粮补协议书
- 2025年新撞坏树木和解协议书
- 施工质量控制岗前培训计划和措施
- 青少年抑郁症的预防和干预策略
- 考公行测言语理解与表达题库之选词填空公考公务员考试省考国考310题(含答案)
- 2021年度计算机审计初级网络培训测试题
- 康复科康复评定表
- 输液反应-完整版
- 【高质量】如何进行有效的校本研修PPT文档
- 水泥生产企业生产安全事故综合应急预案
- 食堂安全培训-课件
- 胆总管结石伴急性胆管炎
- 制度编写书写规范
- 新员工质量保证考试(中软国际)
评论
0/150
提交评论