Ping程序设计c语言课程设计.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
07网络工程本 制作人:北-624寝室 负责人:赖文斌 第四篇 网络编程 ping程序设计 ping命令是使用频率极高的一个网络测试命令,用以测试从一个主机到另一个主机间的网络上否可达。windows自带的ping命令具有强大的功能,它有很多选项用于实现不同的测试目的。本章模仿windows的ping命令,用c语言实现了一个简单的命令。本章着重讲述ping命令的实现原理和c语言的网络编程方法。读者可以在本章的基础上,对本章实现的ping命令进行扩展,开发出功能更强大、更完善的ping命令,并进一步掌握网络编程的方法。 9.1 设计目的 本章通过设计Ping程序,讲解Ping程序的实现原理,并初步讲解了c语言网络编程技术。本章涉及很多网络编程函数和编程技巧。包括库文件的导入;winsock的初始化、注销;socket的创建、关闭;设置socket选项;根据主机名获取IP地址; 从堆中分配一定数量的空间、释放从堆中分配的空间;获取当前进程ID号;数据报的发送;数据报的接等。 通过本程序的训练,使读者对网络编程有一定的了解,掌握Ping程序的设计方法,掌握网络编程的方法和技巧,从而编写出功能更强大的程序。 9.2功能描述 本章用 c 语言实现的 ping命令,能用于测试一个主机到另一个主机间的联通情况,程序还提供了几个选项以实现不同的功能。 (1)实现ping功能。程序能实现基本的ping操作,发送ICMP回显请求报文,接收显应答报文。 (2)能记录路由。程序提供了“-r”选项,用以记录从源主机到目的主机的路由。 (3)能输出指定条数的记录。程序提供了“-n”选项,用以输出指定条数的记录。 (4)能按照指定大小输出每条记录。程序提供了“datasize”选项,用以指定输出的数据报的大小。 (5)能输出用户帮助。程序提供了用户帮助,显示程序提供的选项以及选项格式等。 9.3 总体设计 9.3.1 功能模块设计 1. 功能模块图 本系统共有 4 个模块,分别是初始化模块、功能控制模块、数据控制模块、数据报解读模块和ping测试模块,如图9.1所示。各模块功能描述如下。 Ping程序设计 Ping程序设计 初始化模块 数据报解读模块 功能控制模块 Ping 测试模块 图 9.1 系统模块图 (1) 初始化模块。改模块用于初始化各个全局变量,为全局变量赋初始值;初始化,加载库。 (2)功能控制模块。改模块是被其它模块调用,其功能包括获取参数、计算校验和填充数据报文、释放占用资源和显示用户帮助。 (3)数据报解读模块。改模块用于解读接收到的报文和选项。 (4)测试模块。改模块是本程序的核心模块,调用其他模块实现其功能,主要是实现的功能。 2.系统流程图 系统执行的流程图9.2所示。程序首先调用IniPing()函数初始化各全局变量,然后GetArgments()函数获取用户输入的参数,检查用户输入的参数,如果参数不正确或者没有输入参数,则显示用户帮助信息(User help ),并结束程序;如果参数正确,则对指定目的地执行Ping命令,如果Ping通,则显示Ping结果并释放占用资源,如果没有Ping通,则报告错误信息,并释放占用资源。 开始 开始 初始化个变量 获取参数信息 输入参数是否正确? Ping目的地 Ping成功? 输出Ping结果 释放占用资源 结束 输出错误信息 显示帮助信息 图9.2 系统流程图 3.参数获取(GetArgments()函数)流程图 获取的参数包括“-r”(记录路由)、“-n”(记录条数程序,任意的整数)和datasize(数据报大小)。程序首先判断每一个参数的第一字符,如果第一个字符是“-”(短横线),则认为是“-r”或者“-n”中的一个,然后作进一步判断。如果该参数的第二个字符是数字,则判断该参数为记录的条数,如果该参数的第二个字符是“r”,则判断该参数为“-r”, 用于记录路由;如果参数的第一个字符是数字,则认为 参数是IP地址;或者datasize,然后作进一步的判断。如果该参数中不存在非数字的字符, 则判断该参数为datasize;如果存在非数 字的字符,则判断该参数为IP地址;其他情况则判断为主机名。参数获取的流程如图9.3所示。 开始 开始 Argc==1? 检查第一i个参数的第一个字符 是“-”? 检查第一i个参数的第二个字符 是数字? 该参数表示要获取的记录数 转换成十进制记录到全局变量packetNUM 还有参数? 结束 是数字? 该参数中有非数字字符? 该参数表示 IP地址 该参数表示数据报大小 该参数表示主机名 是“r”? 显示用户帮助 设标志位Record Flag为ture I=i+1 记录到变量 Lpdest中 记录到变量 Datasize中 记录

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档