中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 关于PING本机IP的问题! 上一主题 | 下一主题
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『楼 主』:  关于PING本机IP的问题!

  在和别人讨论怎么在批处理中延时10分钟的问题时,网友说用“ping 127.1. -n 600 >nul 2 > nul”,但是在我的机子上面试验的时候,过几秒钟CMD窗口就自动关闭了,但是我用“ping 127.0.0.1 -n 600 > nul 2 > nul”却可以延时10分钟左右,不知道这是个什么原因哦``

2006-9-13 09:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  纠正一个说法,延迟10分钟是要ping 127.0.0.1 601才准确。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-13 09:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

为什么要多一秒呢?

2006-9-13 09:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re lxmxn:

      127.1 是 127.0.0.1 在 ping 命令中的缩略写法[1][3],它们应该是等价的,你的不同的测试结果应该来源于其它测试环境或因素的不同,请重新测试一下, 并保证在相同的环境和相近的时间间隔内。

      使用 ping /? 可以获知 -n 是指定“Number of echo requests to send.”,也就是指定发送 ECHO 数据包数。默认值为 4。

      因为ping命令在发送每个包之后缺省延迟一秒,再发送下个包,所以每个包之间间隔一秒,按照植树原则,间隔秒数约等于发包次数减一。

      另外,关于ping的技巧还有一些,比如它支持以0起首的八进制数和0x起首的十六进制数指定IP地址,其它的技巧可以参考[3]。

Re namejm:

      严格意义上来说,-n 601 也并不能保证10分钟的准确延时。

      准确延时的前提是,保证ping所发出的每个包都能迅速被响应,发往本地网卡虽然是最佳的选择,但仍然不能排除因为网卡工作状态、网卡驱动程序、本地连接配置出错等问题所带来的延迟响应或没有响应。相关讨论参见[1][2]。


[1][已结]关于"set & echo"变量替换的延迟
http://www.cn-dos.net/forum/viewthread.php?tid=18050

[2][讨论]批处理编程的异类
http://www.cn-dos.net/forum/viewthread.php?tid=12388

[2]ping命令的小秘密
http://wwww.okuc.net/bbs/TopicOt ... ID=1111&id=4966

  Quote:
Ping命令,大家都比较熟悉,它常被用来测试局域网的连通状态。“Ping+IP地址”是大家最常用的一种命令格式,但大家是否注意过Ping命令中的IP地址呢?这里面可是有很多学问和讲究的,下面笔者就为大家介绍一下隐藏在Ping命令中的这些秘密。

  “.0”可以有条件省略

  大家常用“ping 127.0.0.1”命令在本机上做回路测试,用来验证本机的TCP/IP协议簇是否被正确安装。但你发现了吗?使用“ping 127.1”这个命令也能得到同样的测试结果,其实“ping 127.1”和“ping 127.0.0.1”这两条命令是一样的,都是在进行回路测试。

  为什么会这样呢?这就是Ping命令应用中IP地址的使用技巧。大家都知道,IP地址由32位二进制数字组成,为了方便大家记忆,将每8位二进制数字换算成十进制数字,因此就形成了容易记忆的由四糠质剖肿槌傻腎P地址(如127.0.0.1)。由于,Windows操作系统具有自动填充“.0”的功能,因此我就可将“127.0.0.1”变为“127.1”。

  但是,这个“.0”的省略是有条件限制的,并不能任意省略。在Ping命令的应用中,只能将在IP地址的最后一部分十进制数字前出现的一个或多个“.0”省略,如把“ping 127.0.0.1”命令改写成“ping 127.1”。

  如果这一个或多个 “.0”没有紧挨着最后一部分的十进制数字,而是在其他位置,则这个“.0”不能省略,如“ping 202.0.96.1”就不能写成“ping 202.96.1”。这是因为“ping 202.96.1”返回的结果是“202.96.0.1”的应答信息,而不是“202.0.96.1”的应答信息。

  数字串代替IP地址

  在Ping命令中,还可以使用数字串代替IP地址,你相信吗?运行“ping 3658906394”命令,你会看到“218.22.123.26”这个IP地址的返回信息。

  为什么会这样呢?其实,“3658906394”就是IP地址“218.22.123.26”的另一种表示形式。当然,也可按同样的方法Ping其他的IP地址。

  字符串是如何转换而来的呢?其实并不复杂,以“218.22.123.26”这个IP地址为例,IP地址转换成数字串方法如下:先将“218.22.123.26”转换为十六进制“DA.16.7B.1A”,然后去掉小数点后,变为“DA167B1A”,最后将这个十六进制数转换为十进制“3658906394”,那么“218.22.123.26”就变为“3658906394”了。其他IP地址转换为数字串也是使用同样的方法。

  提示:在某些局域网环境中,使用“Ping+数字串”命令可能会失败,出现提示信息“Unknown host数字串”,这是因为该数字串被解析成主机名了,而不是IP地址。

  因此,掌握了上述技巧后,网管在进行网络测试或维护时,可以熟练运用“省略”方式,减轻Ping命令的字符输入量,提高工作效率。同时,使用数字串代替IP地址也可迷惑好奇心强的普通用户,以免他们胡乱设置。

[ Last edited by willsort on 2006-9-13 at 23:17 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-9-13 23:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: