论文_王林_最后一次修改稿4.pdf_第1页
论文_王林_最后一次修改稿4.pdf_第2页
论文_王林_最后一次修改稿4.pdf_第3页
论文_王林_最后一次修改稿4.pdf_第4页
论文_王林_最后一次修改稿4.pdf_第5页
已阅读5页,还剩84页未读 继续免费阅读

论文_王林_最后一次修改稿4.pdf.pdf 免费下载

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

文档简介

毕业论文 设计 题目 基于 Java 的网络聊天系统开发 学生姓名 王林 学号 06010077 专业班级 计算机科学与技术 063 班 指导教师 胡一凡职称讲师 起止时间 2009 9 2010 5 目录目录 诚 信 声 明 1 毕业论文 设计 选题审批表 2 本科毕业论文 设计 任务书 3 本科毕业论文 设计 开题报告 5 论文目录 9 本科毕业论文 设计 答辩记录 85 本科毕业论文与设计作品评定表 86 本科毕业论文 设计 成绩评定表 87 1 诚诚 信信 声声 明明 我声明 所呈交的毕业设计作品和论文是本人经过近四年的基础课 程与专业课程学习的基础上 在指导老师的指导下 经过几个月集中的 毕业设计学习 实践和努力工作所取得的成果 据本人查证 除了文中 特别加以标注和致谢的地方外 设计作品和论文中不包含其他人已经发 表或撰写过的研究成果 我承诺 设计作品和论文中的所有内容均真实 可信 学生签名 签名日期 年月日 2 计算机与信息学院计算机与信息学院计算机与信息学院计算机与信息学院 毕业论文 设计 选题审批表毕业论文 设计 选题审批表 毕业设计 论文 题目 基于 Java 的网络聊天系统开发 指 导 教 师胡一凡职称讲师 指 导 教 师职称 学生人数及姓名1 人 王林完成形式 题 目 来 源 科学研究项目 教学改革项目名称或企事业合作单位名称 选题的依据 题目背景及可行性分析 Internet 是一个不断变化的和扩展的信息海洋 通过它你能迅速 方便地连接到 世界其他地方 获得大量知识和信息 Internet 也是一个能进行通信 研究 交流或 商业展示的场所 使我们今后的生活更加便捷 网络聊天系统就在 internet 基础上 为天南海北的朋友进行交流提供了一好的交流平台 本聊天系统使用 Java 实现一个 类似于 QQ 的程序 完成一个客户端和一个服务器端程序 并且使每个客户端之间可 以进行通讯 因此基于 Java 的网络聊天系统的开发无论是在技术支持上或是在市场 需求上都是可行的 教研室 审核意见教研室主任签字 年月日 系审批意见 系主任签字 年月日 3 计算机与信息学院计算机与信息学院 本科毕业论文 设计 任务书本科毕业论文 设计 任务书 题目 题目 基于基于 JavaJava 的网络聊天系统的网络聊天系统开发开发 1 1 主要内容及基本要求 主要内容及基本要求 基于 Java 的网络聊天室系统实现文本聊天程序包括二人私聊 涉及的内容包括模 仿 QQ 实现简单的 qq 功能 注册 登陆 查找好友 聊天功能 服务端还需实现配 置文件设置 用户管理 日志显示的功能 由一个管理员运行 ChatRoomServer 建立主 机服务器 其他用户运行 ChatRoomClient 运行客户端 通过服务器的 IP 和设置的端 口号与之建立连接 在服务器端可以显示用户登录的信息 客户端可以看见当前在线用 户的人数和昵称 基本要求 1 开发环境和运行环境的选择和部署 2 用户注册 登录 查找添加好友和聊天功能的实现 2 2 进度计划 进度计划 2009 9 6 9 30 准备选题及任务书下发 2009 10 1 10 31 查阅资料 撰写综述 翻译及准备开题 2009 11 1 11 6 开题答辩 2009 11 7 2010 1 10 作品设计过程 2010 1 11 1 22 作品验收 审核论文大纲 2010 3 1 4 9 论文撰写和修改过程 2010 4 10 5 7 评审 打印论文 2010 5 8 5 9 答辩 2010 5 15 以前 提交所有电子资料 4 3 3 主要参考文献 主要参考文献 1 林信良 Java 学习笔记 M 清华大学出版社 2007 4 2 美 BruceEckel Thinking in Java M 机械工业出版社 2007 9 3 潘浩 Java 程序设计教程 M 北京邮电大学出版社出版 2007 6 4 孙卫琴 Java 面向对象编程 M 电子工业出版社 2006 7 5 美 昊斯特曼著 叶乃文 邝劲筠 杜永萍译 JAVA 核心技术 M 机械工业 出版社 2008 6 6 黎海生 Java 语言中的继承于多态 J 科技广场 2008 05 7 邵奇峰 Java 语言在计算机专业课程中的应用 J 计算机教育 2008 02 8 陈 隽 JAVA 语言的程序安全性分析 J 网络安全技术与应用 2009 08 9 吴亚峰 纪超 Java SE 6 0 编程指南 M 人民邮电出版社 2007 11 10 刘志成 基于 Java 聊天系统的设计于实现 J 电脑学习 2008 04 指导教师签名 年月日 学 生 签 名 年月日 此表为教师填写 内容打印 签名必须手写 学生要保存好该任务书 与开题报告一同上交指导 教师 以备装订 浙江万里学院毕业论文 设计 报告纸 5 装 订 线 计算机与信息学院计算机与信息学院 本科毕业论文 设计 开题报告本科毕业论文 设计 开题报告 论文中文题目论文中文题目基于 Java 的网络聊天系统 论文英文题目论文英文题目Internet Chatroom System Is Based On Java 学生姓名学生姓名王林专业班级专业班级计算机科学与技术 063 班 选题的背景和意义选题的背景和意义 a 系统的开发背景 近年来 随着Internet的迅速崛起 互联网已日益成为收集提供信息的最 佳渠道并逐步进入传统的流通领域 于是网络聊天室开始流行起来 越来越多的 用户通过网络聊天畅谈自己的心扉 随着经济的日益发展 网络的观念深入人心 人们越来越需要通过网络高 效简捷的交流 聊天室就是其中的一个工具 网络聊天室作为B2B B2C Business to Customer 即企业对消费者 C2C Customer to Customer 即消费者对消费者 聊天室 在其聊天活动全过程中起 着举足轻重的作用 本文主要考虑的是如何建设C S的网络聊天室 网络聊天是一中网上互动平台 通过聊天可以实现语言的交流 信息的传 递 在人们日常生活中网络交流越来越显得重要 未来的日子里网络聊天将慢慢 的融入人们的生活中 目前在国内 swing 和awt应用最为广泛 swing是 java中为图形界面设计专 门提供的一个包 它的从在为 java 的页面设计提供了丰富的资源 近年来 swing 的运用越来越广泛 很多砖面应用程序都是基于 swing 实现的 b 系统的开发意义 本项目是作为本科的毕业设计课题提出来的 它规模适中 适合于个人开 发 能够锻炼同学的学习新知识能力 锻炼同学的编程能力 锻炼同学的软件 工程的思维方式 它的具体意义如下 1 目前 计算机的发展离不开网络这一方向 网络将大大扩展计算机的 功能 研究计算机在网络方面的技术以及应用 挖掘计算机的网络潜能 将能 够大大提高我们对计算机的本身的认识 同时也能加深对计算机网络的认识 2 网络的一大应用就是用于用户之间联络的聊天工具 通过对聊天工具 的开发 我们将了解计算机如何通过网络相互通信以及在此相互通信的基础上 实现的应用程序级的协议 3 C S结构的优势在不依赖于浏览器 可以在任何操作系统中运行 而且 客户端也可以进行复杂的业务逻辑 这些都是B S系统所无法达到的 浙江万里学院毕业论文 设计 报告纸 6 装 订 线 课题基本内容 拟解决的主要问题课题基本内容 拟解决的主要问题 基本内容 根据当前网络的需求 网络聊天越来越受各种网民所青睐 因此开发网络聊 天是相当有必要 而且在网站内增加聊天功能 它不仅可以提高网站的访问量 同时可以留着访客 更重要的是让访客透过聊天室实时的互相交流 而本人也学 习过 JAVA 语言 对网络编程也较有兴趣 为了更好的考验自己对 JAVA 语言的 掌握程度 本人就决定以 基于 JAVA 聊天设计与实现 为毕业设计 希望通过 这一次的能进一步提高本人的网络开发编程的能力 现在流行的网络聊天室不仅要有漂亮的页面 更要有严谨的规划 注重每 一个细小的环节 这样才能使得在网络聊天时避免不必要错误发生 我们将使用 swing awt 等技术来编辑页面 并把数据库和 swing 页面相关联 传统的网络聊 天室的设计与实现主要是通过页面之间值的相互传递 而本系统中的设计思想 是模拟 struts 中 mvc 设计模式 将系统中的全部页面作为一个 view 层 服务 器当作一个 control 层 客户端一个请求到来是 显示通过服务器的 crotrol 类 不同的请求访问不同的逻辑返回不同的页面 设计并实现文本聊天程序包括二人私聊 涉及的内容包括模仿 QQ 实现简单 的 qq 功能 注册 登陆 查找好友 聊天功能 服务端还需实现配置文件设置 用户管理 日志显示的功能 管理员身份可以看到私聊的和内容 由一个管理员 运行 ChatRoomServer 建立主机服务器 其他用户运行 ChatRoomClient 运行客 户端 通过服务器的 IP 和设置的端口号与之建立连接 在服务器端可以显示用 户登录的信息 客户端可以看见当前在线用户的人数和昵称 在由于开发目的的 原因 一些复杂的功能就不去实现了 主要问题 a 选择创建该程序所需要引用的类和方法 b 确定用户自定义的包 类 它们的目的及方法 c 确定用户定义类中的数据类型和变量 d 确定建立连接时服务器的 地址和端口号 e 确定提交到服务器上的数据 f 确定何时提交数据 g 确定要处理的例外 h 确定例外的出错信息 i 在 Java 里面环境的熟悉和运用 j 对一些方法的应用要多加了解和代码的输入 k 实现一个类似于 QQ 的程序 完成一个客户端和一个服务器端程序 并且 使每个客户端之间可以进行通讯是最主要的一个问题 浙江万里学院毕业论文 设计 报告纸 7 装 订 线 课题研究方法及技术路线课题研究方法及技术路线 制作这个项目 先要确定自己的开发步骤 查找相关资料 了解它应具备 哪些功能 进行功能分析并实现具体功能 当系统完成后 进行调试 修改错 误 使用 java 进行编程 基本完成后在 PC 机运行 并做最后调试 a 使用多线程进行多个客户端和服务端的连接 b 使用文件方式保存用户信息 c 使用对象的方式在服务端和客户端之间传递信息 d 熟练使用 JTable JList 的 model CellRendener 等模型 聊天室服务器端的设计 服务器设计思想 服务器端各主要类的定义及其功能 服务器端用户管理功能的设计与实现 服务器端显示消息的功能设计与实现 服务器端核心代码 聊天室客户端设计 客户端设计思想 客户端各主要类的定义及其功能 客户端登陆的设计与实现 客户端发送消息的设计与实现 客户端显示收到消息的设计与实现 客户端核心代码 4 4 研究的总安排和进度计划研究的总安排和进度计划 总体安排 总体安排 总体安排 总体安排 1 选题 2 开题 3 设计作品 4 答辩 进度计划 进度计划 进度计划 进度计划 2009 9 6 9 30 准备选题及任务书下发 2009 10 1 10 31 查阅资料 撰写综述 翻译及准备开题 2009 11 1 11 6 开题答辩 2009 11 7 2010 1 10 作品设计过程 2010 1 11 1 22 作品验收 审核论文大纲 2010 3 1 4 9 论文撰写和修改过程 2010 4 10 5 7 评审 打印论文 2010 5 8 5 9 答辩 2010 5 15 以前 提交所有电子资料 浙江万里学院毕业论文 设计 报告纸 8 装 订 线 5 5 主要参考文献主要参考文献 1 林信良 Java 学习笔记 M 清华大学出版社 2007 4 2 美 BruceEckel Thinking in Java M 机械工业出版社 2007 9 3 潘浩 Java 程序设计教程 M 北京邮电大学出版社出版 2007 6 4 孙卫琴 Java 面向对象编程 M 电子工业出版社 2006 7 5 美 昊斯特曼著 叶乃文 邝劲筠 杜永萍译 JAVA 核心技术 M 机 械工业出版社 2008 6 6 黎海生 Java 语言中的继承于多态 J 科技广场 2008 05 7 邵奇峰 Java 语言在计算机专业课程中的应用 J 计算机教育 2008 02 8 陈 隽 JAVA 语言的程序安全性分析 J 网络安全技术与应用 2009 08 9 吴亚峰 纪超 Java SE 6 0 编程指南 M 人民邮电出版社 2007 11 10 刘志成 基于 Java 聊天系统的设计于实现 J 电脑学习 2008 04 指导教师意见指导教师意见 指导教师签名 指导教师签名 年年月月日日 教研室 系 评议意见教研室 系 评议意见 系 教研室 主任签名 系 教研室 主任签名 年年月月日日 注 开题报告内容可以打印 但导师和系 教研室 意见及签名必须手写 浙江万里学院毕业论文 设计 报告纸 9 装 订 线 论文目录论文目录 摘 要 12 ABSTRACT 13 1 引言 14 2 网络聊天室的概述 15 2 1 系统的开发背景 15 2 1 1 聊天室的发展 15 2 1 2 聊天室的现状 15 2 2 系统的开发意义 15 2 3 系统的开发目标 15 2 4 系统所用知识概述 16 2 4 1 IP 协议 16 2 4 2 TCP 协议及端口 16 2 4 3 SOCKET 与多线程 16 2 4 4 JAVA GUI 18 3 系统分析 18 3 1 课题来源 18 3 2 对已有聊天软件的分析 18 3 2 1 功能分析 18 3 2 2 网页聊天室 19 3 2 3 缺陷 19 3 3 项目开发的主要内容 19 浙江万里学院毕业论文 设计 报告纸 10 装 订 线 3 4 系统方案说明 19 3 5 系统其他要求 20 3 5 1 系统性能要求 20 3 5 2 系统环境要求 20 3 6 结构流程 21 3 6 1 服务器结构流程图 21 3 6 2 客户端结构流程图 21 3 6 3 登录结构流程图 22 3 6 4 注册结构流程图 23 4 系统设计与实现 25 4 1 聊天室服务器端设计 25 4 1 1 服务器设计思想 25 4 1 2 服务器端各主要类的定义及其功能 25 4 1 3 服务器端用户管理功能的设计与实现 26 4 1 4 服务器端显示消息的功能设计与实现 26 4 1 5 服务器端核心代码 26 4 2 聊天室客户端设计 27 4 2 1 客户端设计思想 27 4 2 2 客户端各主要类的定义及其功能 27 4 2 3 客户端登录的设计与实现 27 4 2 4 客户端发送消息的设计与实现 28 4 2 5 客户端显示收到消息的设计与实现 28 4 2 6 客户端核心代码 28 浙江万里学院毕业论文 设计 报告纸 11 装 订 线 5 系统测试 28 5 1 测试目标 28 5 2 测试过程 29 5 2 1 测试与结果 29 6 总 结 32 致 谢 33 参考文献 34 附录 1 文献综述 35 附录 2 测试报告 42 附录 3 作品说明书 45 附录 4 外文文献译文 46 附录 5 外文文献原文 65 浙江万里学院毕业论文 设计 报告纸 12 装 订 线 摘摘 要要 从实际工程应用角度出发 以计算机网络原理为指导 结合当前网络中的一些常用 技术开发了本聊天室工具 模仿 QQ 实现简单的 QQ 功能 注册 登陆 查找好友 聊 天功能 服务端还需实现配置文件设置 用户管理 日志显示的功能 论文主要对当今 聊天软件的发展情况 与该聊天软件相关的各种技术以及该聊天工具的实现做了一个详 细的阐述 作为计算机网络的应用之一聊天工具 受到了用户的普遍爱好 它把人们带进了 一个虚拟的网络世界 大大的加深了人们之间的联系 它将会作为未来人们通过因特网 相互联系和娱乐的主要平台 聊天工具的开发主要用到了网络通信技术 语音的采集 压缩 传输 解压缩以及回放等技术 文件传输技术 windows 的多线程技术以及视频 的采集 压缩解压缩技术等 本软件基于 Socket 通信 在此基础上 实现点对点聊天 一对多聊天 悄悄话以及表情 可以运行于任何支持 TCP IP 协议的机器上 用到了多 线程的设计 因此线程之间的同步是一大关键之处 由于系统采用 C S Client Server 结构 客户端与客户端以及客户端与服务器端需要传送一些控制消息 因此系统需要自 定义一些消息类型 这是该聊天工具的又一大关键之处 关键词关键词 网络通信 Thread Socket GUI 浙江万里学院毕业论文 设计 报告纸 13 装 订 线 AbstractAbstract From actual project application angle embarking take the computer network principle as the instruction in the union current network some commonly used technology development this chat room Imitate QQ to realize some simple functions such as registering login searching good friends chatting and so on The service should realize some other functions such as the configuration files setting user management and thefunction of diary demonstration The present paper mainly to current chats software s state of play with to chat the software related each kind of technology as well as how does this chat room to realize has made a detailed elaboration Chat room is one of computer network s applications which has received user s universal hobby It has taken people into a hypothesized network world deepening people s relation It will the main platform through the Internet mutual connection and entertainment s in future The development of chat room mainly to use network service technical the file transfer technology the windows and so on technology pronunciation gathering compression transmission solution compression and multi thread technology as well as video frequency gathering the compression solution compress technique and so on This software based on the Socket correspondence based on this realizes chats one to many to chat point to point the intimate conversation and the expression may move in any supports the TCP IP agreement on the machine With multi thread design therefore between the thread synchronization is place of the big key Because the system uses the C S Client Server structure the client side and the client side as well as the client side and the server end need to transmit some control methods therefore the system needs from defines some message type this is another key of this chat room KeyKeyKeyKeyWWWWordordordords s s s Network service Thread Socket GUI 浙江万里学院毕业论文 设计 报告纸 14 装 订 线 1 1 引言引言 自从上世纪中叶第一台计算机诞生以来 计算机越来越走进人们的生活当中 特别是随着计算 机网络的发展 把全世界的人们紧密的联系在一起 大大的扩展了计算机的功能 人们越来越离不 开计算机了 如今 作为网络应用之一的聊天工具 越来越受到人们的欢迎和重视 现在已有的聊 天软件和聊天工具不胜枚举 流行的主要有QQ ICQ MSN Message NetMeeting mIRC和郎码UC和 各种网页聊天室等 这些软件特别是QQ升级很快 其功能是越来越来强大 将代表着聊天软件的发 展方向 目前 聊天软件的功能除了最基本的文本聊天 已经可以语音聊天 图像聊天 视频聊天 文件传输等三维聊天 还发展了短信发送 无线聊天 在线游戏等功能 可以预见在不久的将来 聊天软件将成为人们通过因特网相互联系和娱乐的主要平台 目前的聊天软件以Web模式为主 但HTML作为一种样式语言 HTML技术本身却存在着诸多的缺陷 如它限制了交互式的选择 创建和重复使用交互式组件也比较困难 使用不同的扩充有将导致兼容 性问题 尽管在目前的Internet上 它充当了数据表示的主要角色 这种不协调在Internet发展的 初期还没有什么影响 但随着Internet上信息量的增多和交互性的加强使HTML显得越来越难以胜任 以Web服务器的传送方式可分为静态页面和动态页面 以HTML文件的形式传送固定数据称之为静态网 页 对用户的请求进行分析 并将结果声称其它代码 利用客户端进行传送 此时 会生成 以 cgi jsp asp等为扩展名的脚本程序文件 这些文件根据服务器脚本的分析结果会有所不同 称之为动态网页 单纯的静态页面已经不能满足发展的需要 因为静态页面是用单纯的HTML语言组 成的 它没有交互性 而为了与上网的用户产生交互的关系 随后便发展出了如JavaScript CGI ASP JSP等各种客户端与服务器端的开发技术 JSP是第三代解决方案 它易于第二代解决方案相结 合 创建动态内容 它使与其它各种技术相结合的以网络为基础的应用更容易和更快速的建立起来 这些技术包括 网络服务器 网络浏览器 应用服务器和其他开发工具 该毕业设计课题为基于C S的应用Socket技术的聊天工具的设计与实现 它是在Socket通信和文 本聊天的基础上来实现一对一 一对多聊天 它要求该聊天软件能够自建服务器 被应用在一个个 独立的自治系统中 灵活性很大 浙江万里学院毕业论文 设计 报告纸 15 装 订 线 2 2 网络聊天室的概述网络聊天室的概述 2 12 1 系统的开发背景系统的开发背景 2 1 12 1 12 1 12 1 1 聊天室的发展聊天室的发展 近年来 随着Internet的迅速崛起 互联网已日益成为收集提供信息的最佳渠道并逐步进入传 统的流通领域 于是网络聊天室开始流行起来 越来越多的用户通过网络聊天畅谈自己的心扉 网络聊天室作为B2B B2C Business to Customer 即企业对消费者 C2C Customer to Customer 即消费者对消费者 聊天室 在其聊天活动全过程中起着举足轻重的作用 本文主要考虑的是如何建 设C S的网络聊天室 网络聊天是一种网上互动平台 通过聊天可以实现语言的交流 信息的传递 在人们日常生活 中网络交流越来越显得重要 未来的日子里网络聊天将慢慢的融入人们的生活中 2 1 22 1 22 1 22 1 2 聊天室的现状聊天室的现状 目前在国内 swing 和 awt 应用最为广泛 swing 是 java 中为图形界面设计专门提供的一个包 它的从在为 java 的页面设计提供了丰富的资源 近年来 swing 的运用越来越广泛 很多砖面应用程 序都是基于 swing 实现的 2 22 2 系统的开发意义系统的开发意义 本项目是作为本科的毕业设计课题提出来的 它规模适中 适合于个人开发 能够锻炼我们学 习新知识的能力 锻炼我们编程的能力 锻炼我们软件工程的思维方式 它的具体意义如下 1 目前 计算机的发展离不开网络这一方向 网络将大大扩展计算机的功能 研究计算机在 网络方面的技术以及应用 挖掘计算机的网络潜能 将能够大大提高我们对计算机的本身的认识 同时也能加深对计算机网络的认识 2 网络的一大应用就是用于用户之间联络的聊天工具 通过对聊天工具的开发 我们将了 解计算机如何通过网络相互通信以及在此相互通信的基础上实现的应用程序级的协议 3 C S结构的优势在不依赖于浏览器 可以在任何操作系统中运行 而且客户端也可以进行复 杂的业务逻辑 这些都是B S系统所无法达到的 2 32 3 系统的开发目标系统的开发目标 现在流行的网络聊天室不仅要有漂亮的页面 更要有严谨的规划 注重每一个细小的环节 这 样才能使得在网络聊天时避免不必要错误发生 我们将使用 swing socket 等技术来编辑页面 并 运用 Hibernate 技术把数据库和 swing 页面相关联 传统的网络聊天室的设计与实现主要是通过页 面之间值的相互传递 而本系统中的设计思想是模拟 struts 中 mvc 设计模式 将系统中的全部页面 作为一个 view 层 服务器当作一个 control 层 客户端一个请求到来时 显示通过服务器的 control 类 不同的请求访问不同的逻辑返回不同的页面 浙江万里学院毕业论文 设计 报告纸 16 装 订 线 2 42 4 系统所用知识概述系统所用知识概述 2 4 12 4 12 4 12 4 1 IPIPIPIP 协议协议 IP网络中每台主机都有唯一的IP地址 IP地址用户标识网络中的每个主机 IP地址是一个 32 位 的二进制数序列 为了便于在上层应用中方便地表示IP地址 可以把 32 位的二进制数序列分为 4 个 单元 每个单元占 8 位 然后用十进制整数来表示每个单元 这些十进制整数的取值范围是 0 255 如某主机的IP地址可以是 192 166 3 4 IP地址由两部分组成 IP网址和IP主机地址 IP网址表示 网络的地址 IP主机地址表示网络中的主机的地址 网络掩码用来确定IP地址中哪部分是网址 哪 部分是主机地址 2 4 22 4 22 4 22 4 2 TCPTCPTCPTCP 协议及端口协议及端口 IP协议在发送数据包时 途中会遇到各种事情 例如 可能路由器突然崩溃 使包丢失 又如 一个包可能沿低速链路移动 而另一个包可能沿高速链路移动而超过前面的包 最后使得包的顺序 搞乱 TCP协议使两台主机上的进程顺利通信 不必担心包丢失或包顺序搞乱 TCP跟踪包顺序 并且 在包顺序搞乱时按正确顺序重组包 如果包丢失 则TCP会请求源主机重发包 2 4 32 4 32 4 32 4 3 SocketSocketSocketSocket 与多线程与多线程 Socket是建立在TCP IP协议基础之上 可以看作是通信连接两端的收发器 服务器与客户都通 过Socket来收发数据 除了Socket的第一个不带参数的构造方法以外 其他构造方法都会试图建立 于服务器的连接 如果连接成功 就返回Socket对象 如果因为某些原因连接失败 就会抛出 IOException 当客户请求于服务器程序连接时 可能要等待一段时间 默认情况下 客户会一直等 下去 直到连接成功 或者出现异常 如果希望限定等待连接的时间 可以通过 connect SocketAddress endpoint int timeout 方法来设置超时时间 以毫秒为单位 在通信过程中 如果发送方没有关闭Socket 就突然终止程序 接收方在接收数据时会抛出SocketException 发送 方发送完数据后 应该及时关闭Socket或关闭Socket的输出流 这样 接收方就能顺利读到输入流 的末尾 多线程函数是Win 32 的一个重要方面 其编程技术较为新颖 在程序设计思路上不同于传统的 模块结构化方法 比一般的面向对象的思路也较为复杂 尤其是对于多处理器平台的处理更为复杂 要设计出性能良好的多线程程序 不仅需要对操作系统的处理过程很清楚 还需要对具体应用有一 个全面的认识 并对应用中各线程部分的关系非常清楚 对同步模块中的同步对象的具体含义应尽 可能地清晰明了 以利于在程序中控制同步事件的发生 避免出现死锁或不能同步处理的现象 线 程的创建比较简单 可以利用CreateThread或者AfxBeginThread来实现 终止线程可以用 TerminateThread来实现 线程只见信息的共享可以利用全局变量来实现或者消息函数来实现 多线 程的设计关键之处在于线程之间的同步 浙江万里学院毕业论文 设计 报告纸 17 装 订 线 Socket 程序的工作过程 建立 Socket 连接 在通信开始之前由通信双方确认身份 建立一条专用的虚拟连接通道 数据通信 利用虚拟连接通道传送数据信息进行通道 关闭 通信结束时 再将所建的虚拟连接拆除 具体如图 2 1 所示 服务器 图 2 1 Socket 程序的工作过程 三次握手 第一次握手 原主机发送一个带有本次连接的序号的请求的一个数据帧 第二次握手 目的主机收到请求后 如果同意连接 则发回一个带有一个本次连接序号和源端 机连接序列号的确认 第三此握手 源端机收到含有两次初始序列号的应答后 在向目的主机发送一个带有两次连接 的序列号的确认 1服 务 器 2 监听 4 接收 5 读 6 写 7 关闭 3 客户端client 6 写 5 读 7 关闭 浙江万里学院毕业论文 设计 报告纸 18 装 订 线 具体过程如图 2 2 所示 主机 A主机 B SYN 1 SEQ 1 图 2 2 三次握手过程图 2 4 42 4 42 4 42 4 4 JavaJavaJavaJava GUIGUIGUIGUI 为了方便用Java构建图形用户界面 Sun最初提供了一个在所有平台下具有的独特Java外观的图 形界面库 Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样 的外观 他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样 为了实现Netscape的 本地外观 的目标 在JDK的第一个发布版中包含了AWT这个库 AWT的缺省 实现使用了 对等 机制 即每一个Java GUI窗口部件都在底层的窗口系统中有一个对应的组件 3 3 系统分析系统分析 3 13 1 课题来源课题来源 根据当前网络的需求 网络聊天越来越受各种网民所青睐 因此开发网络聊天是相当有必要 而且在网站内增加聊天功能 它不仅可以提高网站的访问量 同时可以留着访客 更重要的是让访 客透过聊天室实时的互相交流 而本人也学习过 JAVA 语言 对网络编程也较有兴趣 为了更好的考 验自己对 JAVA 语言的掌握程度 本人就决定以 基于 JAVA 的网络聊天室 为毕业设计 希望通过 这一次的能进一步提高本人的网络开发编程的能力 3 23 2 对已有聊天软件的分析对已有聊天软件的分析 如今 聊天软件种类繁多 发展迅速 下面简要的对已有的聊天软件作一下总结分析 3 2 13 2 1 功能分析功能分析 作为如今流行的聊天软件之一QQ 功能已经非常强大 基本上朝着三个大的方向发展 即个人及 时通信 企业实时通信和娱乐资讯 它的功能主要有 ACK 1 第一次握手 主机 A 向 主机 B 发送连接请求 第二次握手 主机 B 收到主机 A 的请求 向主机A回发一个确认 同时向主机 A 发送一个连接请求 第三次握手 主机 A 收到 主机 B发送的数据包在向 主机 B发送一个确认连接 ACK 1 SYN 1 SEQ 1 浙江万里学院毕业论文 设计 报告纸 19 装 订 线 1 个人文本聊天 2 个人语音聊天 3 个人视频聊天 4 图像传输 5 文件传输 6 在线游戏 7 聊天室聊天 8 隐身 上线 9 群聊天 10 企业级实时通信 聊天软件的发展方向是三维化 人性化 综合化 3 2 23 2 2 网页聊天室网页聊天室 作为另一种聊天软件形式 网页聊天室也受到用户的普遍欢迎 网页聊天室的优点就是很好的 利用了浏览器的功能 用户不需要安装任何新的软件 即可加入聊天室聊天 现在的网页聊天室除 了文本聊天之外 语音聊天也很常见 由于其客户端的简化 其功能必然受到限制 3 2 33 2 3 缺陷缺陷 不管是QQ 还是网页聊天室 其最大的缺陷就是服务器固定 用户必须连接上服务器 如果想在 一个自治系统之内 一个孤立的网络 通信 NetMeeting是一款不错的软件 它服务器有很强的灵 活性 任何用户都可以建立自己的服务器 3 33 3 项目开发的主要内容项目开发的主要内容 设计并实现基于Socket的文本聊天程序包括广播聊天 二人私聊 涉及的内容包括用户登录 聊天方式的选择 附带表情 以及悄悄话选项 管理员身份可以看到私聊的和内容 由一个管理员 运行Server建立主机服务器 其他用户运行Client运行客户端 通过服务器的IP和设置的端口号与 之建立连接 在服务器端可以显示用户登录的信息 客户端可以看见当前在线用户的人数和昵称 在由于开发目的的原因 所以不采用登录验证模式 只要输入用户昵称即可登录 对恶意刷屏或语 言不礼貌者 管理员可以清离该用户 3 43 4 系统方案说明系统方案说明 网络聊天室涉及的一个服务器端和N个客户端 客户向服务器发送请求 服务器对请求作出响应 客户尝试与服务器建立连接 一旦连接建立起来 客户和服务器就可以通过套接字进行通信 本系 统中 主要有两个应用程序 分别为服务器程序和客户端程序 用程序主要用于消息转发 客户登陆 信息的管理以及向所有用户发送系统消息等 客户端应用程序主要用于客户聊天记录的显示和信息 输入 浙江万里学院毕业论文 设计 报告纸 20 装 订 线 本系统采用C S Client Server 体系结构 见图 3 1 即客户机 服务器体系结构 其特点是 客户端只装载应用软件 而把复杂的消息处理 用户监控等放在服务器端实现 这样就可以大大简 化客户端软件 图 3 1 C S 体系结构图 其大致实现模型是 1 服务器分配一个端口号 一旦服务器启动 既使用ListenThread线程对端口进行不间断监 听 如果客户请求一个连接 服务器使用accept 方法打开一个socket连接 2 客户在host和port端口建立连接 3 服务器和客户端使用InputStream和OutputStream进行通信 3 53 5 系统其他要求系统其他要求 3 5 13 5 1 系统性能要求系统性能要求 1 时间特性 对于公共聊天和聊天室聊天 要求响应每条消息的时间不超过 1 秒钟 否则用户将感到这个聊 天工具反应迟钝 对于二人文本私聊 要求响应每条消息的时间不超过 500ms 这样使得二人私聊能够有种当面 聊天的感觉 2 灵活性 要求该聊天工具能够适用于多种协议上 而且能够在任意个自治系统之内使用 要求服务器自 建非常灵活 3 5 23 5 2 系统环境要求系统环境要求 1 硬件要求 CPU P4 1 8GHz 以上 内存 256MB 以上 2 软件要求 Windows98 以上的系统或者Unix 安装了支持Socket通信的TCP IP或者协议 Server Client Client ClientClient 浙江万里学院毕业论文 设计 报告纸 21 装 订 线 JDK5 0 以上版本 3 63 6 结构流程结构流程 3 6 13 6 1 服务器结构流程图服务器结构流程图 如图 3 2 所示 服务器端通过 socket 系统调用创建一个 Socket 数组后 即设定了接受连接客 户的最大数目 与指定的本地端口绑定 bind 就可以在端口进行侦 listen 如果有客户端连 接请求 则在数组中选择一个空 Socket 将客户端地址赋给这个 Socket 然后登录成功的客户就可 以在服务器上聊天了 图 3 2 服务器结构流程图 3 6 23 6 2 客户端结构流程图客户端结构流程图 如图 3 3 所示 客户通过 Socket InetAddress port 建立与服务器的连接 服务器与客户都通 过构造 ObjectInputStream ObjectOutputStream 来建立输入输出流 然后双方通过该输入输出流来 相互传递信息 一旦收到客户方的连接请求 服务器 accept 方法返回一个新建的 Socket 对象 服务器启动 处于监听状态 客户端登录 处理 群聊 请求 客户端下线 服务器退出 处理 表情 请求 处理 私聊 请求 浙江万里学院毕业论文 设计 报告纸 22 装 订 线 客户端然后向服务器发送消息 比如文件传输等 服务器收到来自客户的请求后 针对不同的消息 处理请求 图 3 3 客户端结构流图 3 6 33 6 3 登录登录结构流程图结构流程图 如图 3 4 所示 用户登录 首先要有一个提供用户登录的表单 用户登录的表单应该嵌入整体 的结构当中 在实际的应用中 可以这样设计 如果用户没有登录 则在页面中显示用户登录的选 项 用户登录后 则可隐藏用户登录的选项而代之以用户的基本信息 首先 用户要有一个用户名和密码 网络聊天需要很高的稳定性和安全性 因此对用户名不允 许使用恶意的代码作为用户名 同时对密码也要求保密 将密码加密后再存入数据库 另外 一个 网络聊天室 用户的真实姓名是必不可少的 除此之外还需要用户的性别 E MAIL 电话号码等 浙江万里学院毕业论文 设计 报告纸 23 装 订 线 N Y N Y 图 3 4 登录结构流程图 3 6 43 6 4 注册注册结构流程图结构流程图 如图 3 5 所示 点击主页面的用户注册选项后 会弹出一个注册信息界面 用户需要如实填写 用户名 密码 Email 地址 电话 真实姓名等各项信息 提交后 系统进行检测判断该用户名是 否已经注册过 如果已经存在则弹出新页面 提示用户该用户名已经注册过 如果没有则进行下一 步判断 用户输入的两次密码是否一致 然后依次往后判断用户所填写的各项信息是否符合要求 直到所有信息均正确无误 系统将该用户注册信息写入会员表即 user 并提示用户注册成功 用户登 陆后 就可以客户端聊天了 登录入口 取得用户名和密码 用户保存 用户是否存在 密码是否正确 登录成功 浙江万里学院毕业论文 设计 报告纸 24 装 订 线 Y N Y N Y N Y N Y N Y 图 3 5 注册结构流程图 注册入口 用户名有效 两次密码一致 长度有效 Email 地址有效 其他信息有效 注册成功 浙江万里学院毕业论文 设计 报告纸 25 装 订 线 4 4 系统设计与实现系统设计与实现 网络聊天室涉及的一个服务器端和N个客户端 客户向服务器发送请求 服务器对请求作出响应 客户尝试与服务器建立连接 一旦连接建立起来 客户和服务器就可以通过套接字进行通信 4 14 1 聊天室服务器端设计聊天室服务器端设计 服务器端是整个聊天室的主要部分 它包含了客户端接入以及处理其发出请求的一系列方法 是整个聊天室的核心 客户发送的信息也是通过服务器发送到其他用户的 4 1 14 1 1 服务器设计思想服务器设计思想 作为服务器设计 需要考虑以下几点问题 1 安全性 服务器的安全性包括两部分 一是服务器本身软硬件配置上的安全性 比如防止系统漏洞 二 是服务器和客户端通讯协议的安全性设计 防止通过协议本身导致服务器被非法攻击等 2 并发服务能力 主要是线程间的锁控制 涉及到锁控制的 主要是因为共享问题 共享分为两种 一是代码共 享部分 一是数据共享部分 其中做主要的还是数据共享部分 但是没有什么好的解决办法 唯一 的办法就是检查这个共享是不是真正必要的 这些数据可不可以分成两部分以形成不是共享的 3 性能的可线性提高 这主要指服务器的服务能力可以通过增加线程的方式线性提高性能 这就要求服务器的服务能 力分担是均衡的 即实现良好的负载平衡 4 1 24 1 2 服务器端各主要类的定义及其功能服务器端各主要类的定义及其功能 JQServer 这个类是服务端主程序类 Server 这个类是 JavaQQ 服务端类 完成的功能 系统服务 系统配置 用户管理 在线用户 日志管理 ServicePane 这个类是系统服务面板类 实现了 Runnable 接口 完成功能 系统的启动与停止 用户的连接日志显示 UserPane 这个类是用户管理面板类 ServecieProcessBar 这个类是来回滚动条类 OnlinePane 这个类是在线用户面板 LogPane 这个类是日志显示类 FillWidth 这个类仅仅为了填充BorderLayout的宽度 ConfigPane 这个类是系统配置类 完成的功能 1 端口配置 2 要屏蔽的 JQ 号 3 生成的 JQ 号的位数 最小位和最大位 4 是否自动备份日志 自动删除日志的天数 5 数据方式选择 浙江万里学院毕业论文 设计 报告纸 26 装 订 线 文件方式 数据库方式 连接参数 用户名 密码 解码集 4 1 34 1 3 服务器端用户管理功能的设计与实现服务器端用户管理功能的设计与实现 由于客户端承载着与客户端之间和客户端相互之间交流的重要任务 所以对所有用户端进行管 理功能的实现很重要 在这个功能中是通过定义Server这个类来实现的当服务器端接到一个客户端 的请求时 服务器端就会初始化一个Node节点作为客户端 Node类中出了有起必须的一些用户名 输入输出流等属性外 还定义了其自身的引用Node next 作用是把客户端设计成一个链表 通过next 这个属性让他们连接起来 这样做的优点是不需要再定义List或者Map来存放客户端结点 只需在 Node中增加一个属性就能实现 使其性能有很大的提高 Server中定义了对Node进行增加 删除 查找和返回其数目的方法 通过Node的next属性遍历所有的客户端 在整个的聊天室实现中客

温馨提示

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

最新文档

评论

0/150

提交评论