找回密码
 加入
搜索
查看: 2028|回复: 3

[网络通信] [求助]win7下空网关ping命令问题

[复制链接]
发表于 2016-4-11 16:30:29 | 显示全部楼层 |阅读模式
本帖最后由 lin6051 于 2016-4-11 22:14 编辑

我的一个程序ping判断192.168.1.1通执行A.exe , 192.168.2.1通就执行B.exe
在xp下没什么问题
但在win7下
比如:
我电脑设192.168.1.10,网关空白, 接的设备是网关是192.168.1.1
ping192.168.2.1 当然不通,可 程序判断是 通的是怎么解决

代码如下:
if ping('192.168.2.1',200) then
msgbox(0,'','111')
else
msgbox(0,'','222')
endif
win7下 手工ping 看了下 显示是:
PING: 传输失败.General failure
但xp下显示是 time out


暂时用回显判断字符串解决,不过用起来cpu占用挺高的
MsgBox(0,'', _ping('192.168.1.1',100))


Func _ping($ipurl,$delay=100)  ;返回0不通 >0通
    Sleep(50)
    Local $line,$l=Run(@ComSpec & " /c " & 'ping -n 1 -w '&$delay&' '&$ipurl,'',@SW_HIDE,2)
    While 1
    $line &=  StdoutRead($l)
    If @error Then ExitLoop
    Sleep(50)
    WEnd
    Return StringInStr($line,'TTL=')
EndFunc
 楼主| 发表于 2016-4-11 18:06:09 | 显示全部楼层
更新了下  在空白网关下 仅设ip和掩码  ping啥结果都返回大于0,难道是我的au3版本问题?  我用的是 3.3.6.1
发表于 2016-4-11 18:50:10 | 显示全部楼层
试试:
#include <Constants.au3>
#RequireAdmin
$r = Run(@ComSpec  & " /c " & 'ping 127.0.0.1', "", @SW_HIDE, $STDOUT_CHILD)
Local $s

While 1
        $s &=  StdoutRead($r)
         If @error Then 
                ExitLoop
        EndIf
        Sleep(40)
        WEnd
        
MsgBox(0,0, $s)
 楼主| 发表于 2016-4-11 19:17:36 | 显示全部楼层
本帖最后由 lin6051 于 2016-4-11 19:21 编辑

回复 3# chamlien


多谢    我也仅想到用ping回显处理一下 ping 192.168.2.1 -n 1 -w 10
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:28 , Processed in 0.078951 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表