$str = `ping -c 发送的数据包个数 域名或IP`
$str中有100% packet loss 不通.
不过用些服务器是不允许用ping来探测的

解决方案 »

  1.   

    xucarry(小草):
        $str = `ping -c 发送的数据包个数 域名或IP`
    怎么用啊?这只是一个字串呀!
      

  2.   

    $str = `ping -c 4 127.0.0.2`;
    if(preg_match('/100% packet loss/',$str)){
         ping 不通.
         return false;
    }else{
         ping 得通
         return true;
    }
      

  3.   

    xucarry(小草) :
    用你的这段带码
    $str = `ping -c 4 127.0.0.2`;
    if(preg_match('/100% packet loss/',$str)){
         ping 不通.
         return false;
    }else{
         ping 得通
         return true;
    }
    不管是什么IP地址,其结果都是"ping 得通"...不能用啊!
      

  4.   

    小草。好象不对  我试了你的程序,,所有的ip都能ping 通???
     我实验了包括无效的ip
      

  5.   

    <?
    $host="163.com.cn.te";
    $addr=gethostbyname($host);
    if($host!=$addr) echo "$host ping 得通";
    else echo "ping 不通";
    ?>
      

  6.   

    <?
    //测试环境win2000
    $str = `ping -n 4 128.0.0.2`;     //这个返回false
    $str = `ping -n 4 127.0.0.2`;     //这个返回true
    if(preg_match('/100% loss/',$str)){
         echo "ping 不通";
         return false;
    }else{
         echo "ping 得通";
         return true;
    }
    ?>
    也测试。
    使用时注意:
    2000 ping不通返回结果中有100% loss的字符串
    freeBSD ping不通返回结果中则是100% packet loss
    其它系统使用时看一下,修改正则表达式中的匹配字符串就行了