ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:326.02KB ,
资源ID:15512788      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15512788.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(广工计算机网络课设基于UDP的pingdoc.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

广工计算机网络课设基于UDP的pingdoc.docx

1、广工计算机网络课设基于UDP的pingdoc计算机网络课程设计学 院 _ _计算机学院 _专 业 _软件工程 _年级班别 _12 级 4 班 _学 号 91学生姓名指导教师_ _林炳城梁路_ _ _成 绩设计题目已知技术参数和设计要求设计内容与步骤设计工作计划与进度安排计算机网络课程设计任务书编程实现基于 UDP 的 PING (Java)1.编程实现 PING 的服务器端和客户端, 实现操作系统提供的 ping 命令的类似功能。2.服务器端 PingServer 功能:可以 显示用户通过客户端发送来的消息内容 (包含头部和 payload);能够模拟分组的丢失;能够模拟分组传输延迟;将用户发

2、送来的请求 request 在延迟一段随机选择的时间 (小于 1s)后返回给客户端,作为收到请求的响应 reply;通过如下命令行启动服务器: java PingServer port 。port 为 PingServer 的工作端口号3.客户端 PingClient 功能:启动后发送 10 个 request。发送一个 request 后,最多等待 1 秒以便接收PingServer 返回的 reply 消息。如果在该时间内没有收到服务器的 reply ,则认为该请求或对该请求的 reply 已经丢失;在收到 reply 后立即发送下一个 request。请求消息的 payload 中至少包

3、含关键字 PingUDP 、序号、时间戳等内容。如: PingUDP SequenceNumber TimeStamp CRLF其中: CRLF 表示回车换行符 (0X0D0A) ; TimeStamp 为发送该消息的机器时间。为每个请求计算折返时间 (RTT) ,统计 10 个请求的平均 RTT 、最大 /小RTT 。通过如下命令行启动: java PingClient host port 。host 为 PingServer 所在的主机地址;port 为 PingServer 的工作端口号1.学习 ICMP ,了解 ping 命令的工作机理;2.学习 Java UDP Socket 通信机

4、制;3.了解 Java 多线程程序设计;4.服务器 PingServer 程序设计;5.客户端 PingClient 程序设计。6.调试与演示命令工作机制学习2小时UDP Socket 通信机制2 小时多线程程序设计4小时程序设计6 小时程序设计12 小时6.调试与演示4 小时6.课程设计说明书10 小时一、设计环境操作系统: win8开发环境:IDE : eclipse二、 课程设计的目的本次课程设计的目的在掌握计算机网络理论的基础上,了解网络技术,掌握计算机网络相关设计方法和思想, 希望能通过本次的课程设计, 达到巩固和综合应用计算机网络原理和知识, 本次课程设计主要是编程实现基于 UDP

5、 的 ping,使用 java 语言编程,编写一个实验程序、仿真模拟 Ping 命令,通过观察实验结果,从而判定本次程序设计是否成功完成任务。三、理论基础UDP 简介UDP 是 User Datagram Protocol 的简称, 中文名是用户数据包协议, 是 OSI(Open SystemInterconnection ,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务, IETF RFC 768 是 UDP 的正式规范。 UDP 在 IP 报文的协议号是17。UDP 协议全称是用户数据报协议 1 ,在网络中它与 TCP 协议一样用于处理数据包,是一

6、种无连接的协议。在 OSI 模型中,在第四层传输层,处于 IP 协议的上一层。 UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 UDP 用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户 /服务器模式的网络应用都需要使用 UDP 协议。 UDP 协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天 UDP 仍然不失为一项非常实用和可行的网络传输层协议。与所熟知的 TCP(传输控制协议)协议一样, UDP 协议直接位于 IP (网际协议)协议的顶层。根

7、据 OSI(开放系统互连)参考模型, UDP 和 TCP 都属于传输层协议。 UDP 协议的主要作用是将网络数据流量压缩成数据包的形式。 一个典型的数据包就是一个二进制数据的传输单位。 每一个数据包的前 8 个字节用来包含报头信息, 剩余字节则用来包含具体的传输数据。ping 简介Ping 是 Windows 下的一个命令在 Unix 和 Linux 下也有这个命令。 ping 也属于一个通信协议,是 TCP/IP 协议的一部分。利用“ ping ”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。 应用格式: Ping 空格 IP 地址。该命令还可以加许多参数使用,具体是键入

8、Ping 按回车即可看到详细说明。PING (Packet Internet Groper) ,因特网包探索器,用于测试网络连接量的程序。 Ping 发送一个 ICMP(Internet Control Messages Protocol )即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的 ICMP echo ( ICMP 回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。 作为一个生活在网络上的管理员或者黑客来说, ping 命令是第一个必须掌握的 DOS 命令,它所利用的原理是这样的:利用网络上机器 IP 地址的唯一性,给目标 IP 地址发送一个数据包,再要求对方

9、返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。ping 指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行 ping 命令抢占你的网络资源,导致系统变慢,网速变慢。严禁 ping 入侵作为大多数防火墙的一个基本功能提供给用户进行选择。 通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。四、基本要求编程实现 PING 的服务器端和客户端,实现操作系统提供的服务器端 PingServer 功能 :可以 显示用户通过客户端发送来的消息内容 (包含头部和能够模拟分组的丢失;能够模拟分组传输延迟;将用户发送来的请求 req

10、uest 在延迟一段随机选择的时间户端作为收到请求的响应 reply ;通过如下命令行启动服务器: java PingServer port 。ping 命令的类似功能。payload);(小于 1s)后返回给客port为PingServer的工作端口号客户端 PingClient 功能:启动后发送 10 个 request。发送一个request 后,最多等待1 秒以便接收PingServer 返回的 reply 消息。如果在该时间内没有收到服务器的 reply,则认为该请求或对该请求的 reply 已经丢失;在收到 reply 后立即发送下一个request。请求消息的 payload 中

11、至少包含关键字 PingUDP 、序号、时间戳等内容。如:PingUDP SequenceNumber TimeStamp CRLF 其中: CRLF 表示回车换行符(0X0D0A) ; TimeStamp 为发送该消息的机器时间。为每个请求计算折返时间 (RTT) ,统计 10 个请求的平均 RTT 、最大 /小 RTT 。通过如下命令行启动: java PingClient host port 。host 为 PingServer 所在的主机地址port 为 PingServer 的工作端口号五、设计思想UDP 协议的全称是用户数据报,在网络中它与 TCP 协议一样用于处理数据包,在OSI

12、 模型中,在第四层 - 传输层,处于 IP 协议的上一层, UDP 有不提供数据报分组、组装和不能对数据包的排序的缺点, 也就是说, 当报文发送之后, 是无法得知是否安全完整的到达目的地。这个课设通过调用 java JDK 中包下的 DatagramSocket 和 DatagramPacket 类,可以实现对用户数据报文的控制, DatagramSocket 类用于创建接收和发送 UDP 的 Spcket 实例,调用 DatagramPacket 类用于处理报文,因为它可以将 Byte 数组、目标地 址、目标端口等数据包装成报文或者将报文拆卸成 Byte 数组。通过调用DatagramSoc

13、ket和DatagramPacket 类来实现操作系统提供的ping 命令的类似功能。编程实现基于 UDP 的 ping 的思想可以概括为几点:服务器端 PingServer 功能:可以并发地为多个用户服务;显示用户通过客户端发送来的消息内容 (包含头部和 payload) ;将用户发送来的请求在延迟一段时间后返回给客户端,作为收到请求的相应。通过 java PingServer 9999 (端口号可以任意选择)命令行来启动服务器。客户端 PingClient 功能:启动都发送 10 个请求,发送一个请求后,最多等待 1 秒以便接收 PingServer返回的响应消息。请求消息的 payloa

14、d 中包含有关键字 PingUDP 、序号、时间戳等内容。为每个请求计算折返时间( RTT ),统计 10 个请求的平均 RTT 、 min/max 的RTT 。通过 java PingClient localhost (本机 IP 地址) 9999 命令行启动。程序设计流程图根据课程设计的要求,结合程序设计流程,本次设计按如下的流程进行开始 结束Y功能分析N 通过程序设计程序校验六、 源程序服务器端代码import * 服务器端*author LinBingcheng */public class PingServer extends Thread private int initPort;

15、 ubstring(0, 100);/ 将数据从缓冲区轮换成字符串InetAddress host = (); / 获取客户端的 ip 地址int port = (); / 获取客户端的通讯端口buffer = (); / 请求数据转换成 byte 数组,用于发回客户端DatagramPacket sendPacket = new DatagramPacket(buffer, ,host, port); / 生成数据包,已经保存好发送目的地的地址和端口了try (sendPacket);/ 发送数据给客户端 catch (Exception e) ();/显示请求结果public Datagr

16、amPacket getReceivePacket() return receivePacket;public void setReceivePacket(DatagramPacket receivePacket) = receivePacket;public DatagramSocket getServerSocket() return serverSocket;public void setServerSocket(DatagramSocket serverSocket) = serverSocket;客户端代码import * 客户端*author LinBingcheng*/publi

17、c class PingClient public static void main(String args) throws Exception /Scanner scanner = new Scanner;/ 接收从系统指定输入方式输入的数据(默认为键盘)String host = args0; /(); / 获取服务器端所在的主机地址int port = (args1);/(); / 获取服务器端监听的端口号Long rtt = new Long10; /用于存储rtt ,用于最后的统计for (int i = 1; i 1000) / 如果接收时间大约 rtti - 1 = (long)

18、 1000; receiveSentence = data losen;1000ms,视为数据包丢失/显示从server 返回的数据端rtt: + rtti- 1); /显示rtt(); /关闭socket/统计出平均 rtt,最大 rtt 和最小 rttlong sumRtt = 0;long maxRtt = 0;long minRtt = rtt0;for (int i = 0; i maxRtt) maxRtt = rtti;if (rtti minRtt) minRtt = rtti;sumRtt += rtti;average rtt: + sumRtt / 10 + millis

19、econd);max rtt: + maxRtt);min rtt: + minRtt);七、 测试用例按 “ win + R ” 键,在弹出的对话框中输入“ cmd ”回车,如下:通过“ cd”命令,进入源程序所在目录输入“ javac ”命令,编译程序输入“ javac ”命令,编译程序在相同目录下生成两个可执行文件(没有报错说明编译成功)测试程序将 class 文件复制到简单易读取的位置此时需要启动 PingServer 和启动 PingClient ,打开两个命令行,通过“ cd”进入到文件存放目录输入测试执行命令: java PingServer 9999 ( 9999 是端口号可以

20、是任意的)java PingClient localhost 9999 (localhost 代表本机,即 命令进行启动,并发送 10 个请求,请求信息 payload 包括了 PingUDP、SequenceNumber 、TimeStamp的内容,以及每个请求的折返时间, 并统计 10 个请求的平均 RTT以及最大 RTT和最小 RTT,此时 PingClient 客户端收到 PingServer 服务器的返回信息显示如下:PingServer 输出结果如下PingClient 输出结果如下对于分组的丢失体现在如果生成的 rtt 超过 1000ms 就当做是是丢失了 (在 1 秒之内),结

21、果如下:其中 rtt 是指发送数据的时间减去接收数据的时间,也即产生的时延。八、 总结虽然说课程设计在很早之前题目就发了, 但由于大一的时候加入了一个工作室,这一年一直被工作室的老师叫去做他那边的项目, 所以没去看, 等到真正布置时已经是期末考试了,考完试就剩下一个多星期做,原本打算做 P2P 聊天室的,复习了几天以前学过的 swing 开发和网络编程,界面也做着,设计什么的做了一些,但也对于这方面的知识也没怎么掌握, 做起来十分吃力, 同时工作室的老师又因为他那边之前的接的一个项目的原因考完试就催着我赶他那边的项目,所以又花了几天码他那边的代码,本来就不多的时间不够开放一个完美的 P2P 聊

22、天软件,到接近交作业前几天觉得做个精简版也不大可能, 毕竟这样要重新搭框架,设计。所以我选择了这个比较简单的题目。虽然学过 java 网络编程要做到这个题目还是可以的,但也由于时间也不够分析这个题目。 所以有参考网上的往届师兄师姐的作业的, 这点我要承认, 参考了一些业务逻辑, 最后在有限的时间里我也尽我的能力写好这份代码, 实现了课程设计要求的模拟的功能。在这个学期我遭遇了很多事情, 尤其是期末的这段时间还任然伴随着工作室项目的压力让我感触良多,由于没有什么机会复习,每堂考试感觉基本都要挂,由于大多是专业课凭借自己的一点点了解勉强扛过去了, 但考完试没休息依旧还在赶项目,作业课设都没什么机会

23、估计,情绪也很低落,感觉压力十分的大,这样的不顾学业也不知道为了什么, 迷茫了好久, 不知如何是好, 心中也在想我到底是要以学业为重, 还是为了那些所谓的人情世故而做着自己不想做的无意义的东西,我只希望大学接下来的时间里能好好静下心来学习的, 不再去做工作室的老师在外面接的那些商业项目, 整天写着毫无意义的增删查改, 我的时间能用来做自己想做的事,学自己想学的东西,以备大四好好找工作了。如果老师有看文档的话,那么就附上我自己写的 P2P 聊天室界面,希望能加点分,怪可惜,才搭好界面没多少时间去写后台, 打算把网络和数据库结合在一起的,数据库本来之前写过一个作品的, 但这次打算结合网络, 所以前期设计有点大,如果时间够的话应该可以完全把作业实现的, 但验收网络作业的时间太早九、 附带半成品作业截图

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2