简单的跟时通信软件_第1页
简单的跟时通信软件_第2页
简单的跟时通信软件_第3页
简单的跟时通信软件_第4页
简单的跟时通信软件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

河南理工大学 计算机科学与技术学院 课程设计报告 2014 2015 学年第一学期 课程名称 计算机网络 设计题目 简单的及时通信软件 姓 名 郝腾宇 学 号 2 专业班级 计算机 12 3 指导教师 李 莹 莹 2015 年 1 月 8 日 简单的及时通信软件 2 目录目录 一 任务分析与方案设计 1 1 1 任务分析 任务分析 1 2 2 方案设计方案设计 1 二 需求分析 2 1 1 功能需求分析功能需求分析 2 2 2 数据需求分析 数据需求分析 2 3 3 性能需求分析 性能需求分析 3 4 4 运行需求分析 运行需求分析 3 三 开发环境与工具 4 1 1 设计环境设计环境 4 1 1 eclipse 开发平台介绍 4 2 2 基础知识基础知识 4 2 1java2 1java SocketSocket 网络编程简介网络编程简介 4 2 22 2 套接字的介绍套接字的介绍 5 2 32 3 TCP IPTCP IP 协议简介协议简介 6 四 关键技术与理论 6 1 JAVA1 JAVA 编程技术编程技术 6 2 Java2 Java SocketSocket 网络编程接口网络编程接口 7 五 相关图解及程序 8 1 1 体系结构设计体系结构设计 8 2 2 具体功能模块的分析具体功能模块的分析 8 六 测试及结果分析 9 七 心得体会 12 八 参考文献 14 简单的及时通信软件 3 一 任务分析与方案设计一 任务分析与方案设计 1 1 任务分析 任务分析 计算机网络被应用于我们生活中的方方面面 可以说是网络让我们的生活 变得更加美好 更加方便和快捷 我们的生活离不开网络 基于局域网的即时通信软件的核心技术其实与基于 Internet 的即时通信软 件的设计技术是一样的 只是规模比较小 基于 Internet 的通信工具一般采用 TCP 或者 UDP 协议来实现的 开发技术已经非常成熟 它们不仅实现了即时聊 天 文件传输等功能 而且还能够实现即时视频 语音聊天功能等 在局域网 内 这类软件的设计比在 Internet 中设计更为简单 因为 Internet 是网络中 的网络 结构更为复杂 遇到的情况要比在局域网中还要多 所以说局域网的 聊天工具的设计要相对简单些 而且即时通信是一个终端连往一个即时通信网络的服务 即时通信不同于 e mail 在于它的交谈是实时的 大部分的即时通信服务提供了 presence awareness 的特性 显示联络人名单 联络人是否在线与能否和联络人交谈 2 2 方案设计方案设计 程序采用 JAVA 编程 利用 java 强大的基础类库 调用 java 中界面开发的 swing 和网络编程的 net 函数群来完成本次的 java socket 网络套接字 网络 即时通信工具的开发 在 java 中 可以把发送的信息看成是一个一个的对象 当我们利用 socket 链接把客户端和服务器链接起来以后 他们之间就可以以对 象流的形式发送彼此需要通信的信息了 在 java 的网络编程中 最为核心的就 是客户端和服务器相互取得 socket 的链接 只要能够能够取得链接 其他的工 作基本上都是 java 的面向对象的编程思想去完成一些网络通讯的业务逻辑的处 理 简单的及时通信软件 4 二 需求分析二 需求分析 1 1 功能需求分析功能需求分析 1 用户端之间的信息发送 本程序需要实现的最基本的功能 用户在界面上可 以将自己需要发送的信息填入相应的对话框中 点击发送按钮后 可以将信息 正常的发送给相应的其它用户 这个过程中的客户端与客户端之间使用点对点 发送信息 预计利用 TCP IP 协议中的 UDP 协议 在本程序中共需要 3 个端口 此功能预计使用 3 号端口 2 在线用户主机 IP 列表的维护 在用户发送信息之前 需要选择相应的目 的地端 IP 这也就需要客户端拥有在线用户主机的 IP 地址 这个在线主机列表 的维护是需要客户端定时自动向服务器端发送信息 服务器端收集并维护在线 用户列表 再发送回客户端 需要在客户端和服务器端都使用定时器来完成此 功能 此功能预计使用 1 2 号端口 3 在 C S 模式中 服务器与客户端是相互依赖的 在客户端启用以后 需要 查看服务器端是否在线 服务器在线才能正常使用客户端 如果服务器不在线 则在检测一定次数以后自动退出客户端程序 在使用过程中 客户端在指定时 间内未向服务器端发送信息的 服务器认为客户端下线 客户端在一定时间内 未收到服务器端信息的 认为服务器已经下线 则提示用户并建议退出 在用 户一定时间后没有退出的则自动关闭客户端程序 2 2 数据需求分析 数据需求分析 1 客户端之间聊天信息 在控件上显示时格式化 更易于用户的查看自己发 送或接收到的信息 2 在线用户聊天信息 服务器端存放在适当的空间中 在发送给客户端时 对信息列表进行格式化 便于客户端提取信息 3 客户端向服务器端发送的确认在线信息 包括客户端刚刚启动时的初始化 信息和在使用过程中的确认在线信息 4 其它程序内部可能需要设计的数据结构体 简单的及时通信软件 5 3 3 性能需求分析 性能需求分析 1 可靠性高 能在由于系统问题或其它原因产生错误后 作出相对应处理 比如网络初始化失败 服务器不在线等 可以提示用户安全退出本程序 在出 现不可知的错误以后 可以尽量安全的退出程序 在程序的设计过程中 要求 能尽可能多的设想到用户使用过程中可能发生的事件 并能在判断事件后做出 相应的处理 使程序具有较高的容错性能 2 2 宜操作性 程序简单易懂 容易上手使用 设计界面是 简化界面的复杂性 模拟 QQ 等现有即时通讯工 具的界面 使用户能很容易看懂并使用 3 开发文档易理解 保证以后自己二次开发或他人接手开发时 能够清晰的 理解整个系统的设计思路和实现细节 4 模块化设计此软件的功能 不同的模块实现不同的功能 使得软件易于以 后的维护与扩展 在以后可以更好的完善本软件的功能 更方便于在工作中的 应用 4 4 运行需求分析 运行需求分析 1 用户界面 程序较小 启动速度快 可在网络中使用 有注册功能 需进行用户登录 启 动后的应用界面要清爽 设计要简单明了 要具有较高的易用性 2 故障处理 在遇到可预知的故障与情况时 能提示用户并自动退出 在遇到不可预知的故 障时能安全退出 三 开发环境与工具三 开发环境与工具 1 1 设计环境设计环境 开发程序的操作系统 Windows7 在 Windows XP 2000 里也可以 简单的及时通信软件 6 编译工具 eclipse 程序工程 JAVA 工程 Server 和 Client 网络环境 局域网 或互联网上运用 只要安装客户端并且知道服务器端的 IP 1 1eclipse 开发平台介绍开发平台介绍 Eclipe 是著名的跨平台的自由集成开发环境 IDE 主要用来 Java 语言开发 Eclipse 的本身只是一个框架平台 但是众多插件的支持 使得 Eclipse 拥有较 佳的灵活性 许多软件开发商都以 Eclipse 为框架开发自己的 IDE 另外由于 eclipse 是开源的 所以得到了广大用户的认可 Eclipse 也于 2001 年 11 月被它的开发公司 IBM 公司贡献给开源社区 现在它由非营利软件供应商 联盟 Eclipse 基金会 Eclipse Foundation 管理 2 2 基础知识基础知识 2 1java2 1java SocketSocket 网络编程简介网络编程简介 Socket 有两种主要的操作方式 面向连接的和无连接的 面向连接的 sockets 操 作就像一部电话 他们必须建立一个连接和一人呼叫 所有的事情在到达时的 顺序与它们出发时的顺 序时一样 无连接的 sockets 操作就像是一个邮件投递 没有什么保证 多个邮件可能在到达 时的顺序与出发时的顺序不一样 到底用哪种模式是邮应用程序的需要决定的 如果可靠性更重要的话 用 面向连接的操作会好一些 比如文件服务器需要他们的数据的正确性和有序性 如果一些数据丢失了 系统的有效性将会失去 一些服务器 比如间歇性地发 送一些数据块 如果数据丢了的话 服务器并不想要再重新发过一次 因为当 数据到达的时候 它可能已经过时了 确保数据的有序性和正确性需要额外的操 作的内存消耗 额外的费用将会降低系统的回应速率 无连接的操作使用数据报协议 一个数据报是一个独立的单元 它包含了 所有的这次投递的信息 把它想象成一个信封吧 它有目的地址和要发送的内 简单的及时通信软件 7 容 这个模式下的 socket 不需要连接一个目的的 socket 它只是简单地投出 数据报 无连接的操作是快速的和高效的 但是数据安全性不佳 面向连接的操作使用 TCP 协议 一个这个模式下的 socket 必须在发送数 据之前与目的地的 socket 取得一个连接 一旦连接建立了 sockets 就可以使 用一个流接口 打开 读 写 关闭 所有的发送的信息都会在另一端以同样的 顺序被接收 面向连接的操作比无连接的操作效率更低 但是数据的安全性更高 java 降低了建立一个 sockets 程序的难度 每一个传输模式都被封装到了 不同的类中 面向连接的类将会首先被我们讨论 到底用哪种模式是邮应用程 序的需要决定的 如果可靠性更重要的话 用面向连接的操作会好一些 比如 文件服务器需要他们的数据的正确性和有序性 如果一些数据丢失了 系统的 有效性将会失去 一些服务器 比如间歇性地发送一些数据块 如果数据丢了 的话 服务器并不想要再重新发过一次 因为当数据到达的候 它可能已经过 时了 确保数据的有序性和正确性需要额外的操作的内存消耗 额外的费用将 会降低系统的回应速率 2 22 2 套接字的介绍套接字的介绍 多个 TCP 连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输 数据 为了区别不同的应用程序进程和连接 许多计算机操作系统为应用程序 与 TCP IP 协议交互提供了称为套接字 Socket 的接口 套接字 是支持 TCP IP 的网络通信的基本操作单元 可以看做是不同主机 之间的进程进行双向通信的端面点 简单的说就是通信的两方的一种约定 用 套接字中的相关函数来完成通信过程非常非常简单的举例说明下 Socket Ip address TCP UDP port 应用层通过传输层进行数据通信时 TCP 和 UDP 会遇 到同时为多个应用程序进程提供并发服务的问题 2 32 3 TCP IPTCP IP 协议简介协议简介 TCP IP 协议实际上就是在物理网上的一组完整的网络协议 其中 TCP 是提供 传输层服务 而 IP 则是提供网络层服务 TCP IP 主要包括以下协议 IP 网间协议 Internet Protocol 负责主机间数据的路由和网络上数据 简单的及时通信软件 8 的存储 同时为 ICMP TCP UDP 提供分组发送服务 用户进程通常不需要涉及 这一层 ICMP 网间报文控制协议 Internet Control Message Protocol 此协议处理 网关和主机的差错和传送控制 TCP 传输控制协议 Transmission Control Protocol 这是一种提供给用户 进程的可靠的全双工字节流面向连接的协议 它要为用户进程提供虚电路服务 并为数据可靠传输建立检查 四 关键技术与理论四 关键技术与理论 1 JAVA1 JAVA 编程技术编程技术 Java 是 Sun 公司推出的一种编程语言 它是一种通过解释方式来执行的语言 语法规则和 C 类似 同时 Java 也是一种跨平台的程序设计语言 用 Java 语 言编写的程序叫做 Applet 小应用程序 用编译器将它编译成类文件后 将它存在 WWW 页面中 并在 HTML 档上作好相应标记 用户端只要装上 Java 的 客户软件就可以在网上直接运行 Applet Java 非常适合于企业网络和 Internet 环境 现在已成为 Internet 中最受欢迎 最有影响的编程语言之一 Java 有许多值得称道的优点 如简单 面向对象 分布式 解释性 可靠 安全 结构 2 Java2 Java SocketSocket 网络编程接口网络编程接口 事实上网络编程 简单的理解就是两台计算机相互通讯数据而已 对于程序 员而言 去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了 Java sdk 提供一些相对简单的 api 来完成这些工作 socket 就是其中之一 对于 java 而言 这些 api 存在于 这个包里面 因此 只要导入 这个包就可以准备网络编程了 网络编程的基本模型就是客户机到服务器模型 简单的说 就是两个进程之间相互通讯 然后其中一个必须提供一个固定的位 置 而另一个则只需要知道这个固定的位置 并去建立两者之间的联系 然后 简单的及时通信软件 9 完成数据的通讯就可以了 这里提供固定位置的通常称为服务器 而建立联系 的通常叫做客户端 基于这个简单的模型 就可以进入网络编程 对于 java 而言已经简化了 socket 的编程接口 首先需要确定有关提供固 定位置的服务方是如何建立的 java 提供了 serversocket 来对其进行支持 事实上当创建该类的一个实力对象并提供一个端口资源 就建立了一个固定位 置可以让其他计算机来访问 serversocket server new serversocket 6789 这里稍微要注意的是端口的分配必须是唯一的 因为端口是为了唯一标识每台 计算机唯一服务的 另外端口号是从 0 65535 之间的 前 1024 个端口已经被 tcp ip 作为保留端口 因此 分配的端口只能是 1024 个之后的 有了固定位 置 现在所需要的就是一根连接线了 该连接线由客户方首先提出要求 因此 java 同样提供了一个 socket 对象来对其进行支持 只要客户方创建一个 socket 的实例对象进行支持就可以了 socket client new socket inetaddress getlocalhost 5678 客户机必须知道有关服务器的 ip 地址 对于这一点 java 也提供了一个相关 的类 inetaddress 该对象的实例必须通过它的静态方法来提供 它的静态方 法主要提供了得到本机 ip 和通过名字或 ip 直接得到 inetaddress 的方法 i o 操作总是和网络编程息息相关的 因为底层的网络是继续数据的 除 非远程调用 处理问题的核心在执行上 否则 数据的交互还是依赖于 io 操作的 所以 你也必须导入 java io 这个包 java 的 io 操作也不复杂 它提供了针对于字节流和 unicode 的读者和写者 然后也提供了一个缓冲用于数据的读写 bufferedreader in new bufferedreader new inputstreamreader server getinputstream printwriter out new printwriter server getoutputstream 上面两句就是建立缓冲并把原始的字节流转变为 unicode 可以操作 而原始的 字节流来源于 socket 的两个方法 getinputstream 和 getoutputstream 方 法 分别用来得到输入和输出 简单的及时通信软件 10 五 五 相关图解及程序相关图解及程序 1 1 体系结构设计体系结构设计 一般的通信工具 都采用客户端 服务器体系结构 客户端 服务器的结构包 含 客户端和服务端 客户端访问和处理服务器上的数据 服务器接收和处理 客户端的数据请求 这种模式的好处就是可以将一个系统分为两个独立的部分 进行开发设计 便于软件开发 而且也把一个软件的功能交给两个部分去完成 则更加有效的利用了系统资源 本程序中也采用了简单的客户端 服务器模式 由于本程序比较简单 仅 演示客户端与服务端进行通信 2 2 具体功能模块的分析具体功能模块的分析 由于该系统采用 C S 模式 所以对功能模块进行划分时 就需要分服务器和 客户端两部分进行 由于服务器的主要功能是等待接收并反馈客户端的信息 所以服务器需要信 息输出模块和通信模块 其中通信模块包含信息发送模块和信息接收模块 而 信息输出模块要做到当信息发生改变时及时更新 客户端同样也需要通信模块 和信息输出模块 同时要互相通信 就要具备输入输出 具体模块划分见下图 简单的及时通信软件 11 六 测试及结果分析六 测试及结果分析 运行客户端 运行服务器端 启动客户端 简单的及时通信软件 12 互发信息 简单的及时通信软件 13 七 心得体会七 心得体会 及时通信是是网络发展的必然趋势 它的技术仍然在不断的改进和蓬勃发 展中 本次设计虽然实现了简单的即时通信功能 但是从很多方面来说都是不 完善的 实现了字符聊天却没有实现多媒体即时通信 实现了同步套接字聊天 和异步套接字传送文件却没有实现更科学的异步套接字聊天和同步套接字传送 文件 由于之前没有学过 Java 所以对 Eclipse 编程环境几乎是一无所知 在程序 编译过程中遇到的问题比较多 主要是对那些错误还有警告开始都不知道什么 意思 花了两天的时间在程序的调试上面 另外就是一些概念性的知识欠缺 尤其是套接字编程原理 所以对程序的一些函数的功能用法有些模糊 其实遇到的种种问题主要是两方面的原因 一个是基础知识的掌握不够牢 固 概念的混淆 不能够很快的用最佳的方式去解决遇到的问题等等 都是由 于知识的不熟练导致 另一个就是 Java 部分知识的缺乏 导入文件还有一些参 数的选择都要查询一下资料 主要是第一次操作这方面的知识 针对这些问题 主要从两个方面着手处理应该 一方面是多对所学过的知识强化温习 做到熟 能生巧 温故知新 另一方面就是准备的不够充分 之前应该及早的对所需软 件进行熟悉 在以后的实习过程中需要注意 简单的及时通信软件 14 经过这次课程设计 我们收获了很多 也学习到了很多 使我对网络的 TCP IP 协议和网络中实现主机之间的相互通信的方法有了一定的了解和体会 通过这次编程 也加深了对网络编程特别是 WinSock 编程的理解 同时对 java 的一些编程技术的实现也有了更深入的了解 学到了到底一些功能要用哪些规 定的函数来实现 以及在用这些函数的时候要注意哪些东西 比如说 要引用 规定的函数包 设定规定的变量 组件 并且在引用的时候需要注意的东西等 同时也深刻体会到 SOCKET 编程的基础性 多样化 由于与网络紧密联系 SOCKET 编程的也可能出现各种未知的问题 需要我们更深入地了解网络协议 和架构 才可能做出通用性高 稳定性高的即时通信程序 另外一个收获是 知道了 eclipse 这个软件开发程序

温馨提示

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

评论

0/150

提交评论