使用PHP自动PING IP,校检网络连接是否正常!

  1. <?php
  2. $server = 'ping kalvin.cn -n 1';
  3. $last_line = exec($server, $arr);
  4. echo "$last_line"; //最后总结结果
  5. print_r($arr); //PING命令详细数据数组
  6. ?>

国外一位大师使用Sockets Ping,似乎效率更高:

PHP代码
  1. <?php
  2. // Checksum calculation function
  3. function icmpChecksum($data)
  4. {
  5. if (strlen($data)%2)
  6. $data .= "/x00";
  7. $bit = unpack('n*', $data);
  8. $sum = array_sum($bit);
  9. while ($sum >> 16)
  10. $sum = ($sum >> 16) + ($sum & 0xffff);
  11. return pack('n*', ~$sum);
  12. }
  13. // Making the package
  14. $type= "/x08";
  15. $code= "/x00";
  16. $checksum= "/x00/x00";
  17. $identifier = "/x00/x00";
  18. $seqNumber = "/x00/x00";
  19. $data= "Scarface";
  20. $package = $type.$code.$checksum.$identifier.$seqNumber.$data;
  21. $checksum = icmpChecksum($package); // Calculate the checksum
  22. $package = $type.$code.$checksum.$identifier.$seqNumber.$data;
  23. // And off to the sockets
  24. $socket = socket_create(AF_INET, SOCK_RAW, 1);
  25. socket_connect($socket, "www.google.com", null);
  26. // If you're using below PHP 5, see the manual for the microtime_float
  27. // function. Instead of just using the m
  28. //     icrotime() function.
  29. $startTime = microtime(true);
  30. socket_send($socket, $package, strLen($package), 0);
  31. if (socket_read($socket, 255)) {
  32. echo round(microtime(true) - $startTime, 4) .' seconds';
  33. }
  34. socket_close($socket);
  35. ?>

转自http://blog.csdn.net/gumanren/article/details/5752394

试用php的ping命令的更多相关文章

  1. [服务器]脚本:批处理带参数ping命令 发送邮件脚本

    1.批处理带参数ping命令 @echo offecho Input you IP address ......set /p IP=echo Your IP number is %IP%.ping % ...

  2. Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决

    Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools       # ifconfig apt ...

  3. windows 环境和linux环境下 ping命令的区别:

    Ping 是Windows自带的一个DOS命令.利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障.该命令可以加许多参数使用,键入Ping按回车即可看到详细说明.Ping 命令可 ...

  4. ping命令执行过程详解

    [TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...

  5. ping命令脚本实现显示网络状态、学生姓名、学号

    #!/bin/bash a=. ####定义一个固定变量 h=(wanghao xieyunshen 刘桃) ####定义数组 ..} ####for循环,后面的in是条件即从多少循环到多少 do # ...

  6. [小菜随笔]python tkinter实现简单的ping命令

    本文主要是介绍python图形界面上的按键与实际功能的对接,其实编程掌握了基础之后的学习应该都是靠自己去挖掘其他的 在网上发现多半教程都是2的,故本文使用的是python3.5,其实也没什么区别,就有 ...

  7. cmd中用PING命令时,出现'Ping' 不是内部或外部命令 解决方案

    在cmd中用PING命令时,出现'Ping' 不是内部或外部命令,也不是可运行的程序或批处理文件.先了解一下内容:1.可执行文件.命令文件和批处理文件以.exe或者.com或者.bat为扩展名的文件分 ...

  8. ping命令

    ping命令能够用于判断一个主机是否可达或者是否存活.它的工作原理就像潜水艇的探测原理一样.该命令通过向目标计算机发送一个数据包,请求目标计算机回送该数据包以表明自己还存活着.同时该命令还能够知道数据 ...

  9. 每天一个linux命令(54):ping命令

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...

随机推荐

  1. 查找java文件

    想要在eclipse里找一个类文件,可以用快捷键CTRL + SHIFT + R,但是有些文件是jar包里的类文件,可以用下图方法,创建一个变量,然后按住CTRL键,点击类名称 这样就找到jar文件了

  2. windows环境搭建ui自动化环境

    windows环境安装python虚拟环境 https://www.cnblogs.com/suke99/p/5355894.html https://www.cnblogs.com/jiuyang/ ...

  3. 用shell编写dhcp自动获取脚本

    #!/bin/bash#net=$(ifconfig ens33 | awk -F'[ .]+' '/inet\>/{print $3"."$4"."$5 ...

  4. 洛谷——P1759 通天之潜水

    P1759 通天之潜水   题目背景 直达通天路·小A历险记第三篇 题目描述 在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前.河面上并没有船,但好在小A有n个潜水工具. ...

  5. Git ——Tool

    Git: 何为Git: Git 是一个可以实时记录文件变化.维护文件的安全的一个仓库! Git仓库是由** Linux 系统之父 Linus Torvalds ** 创建的一个开源 的软件!Githu ...

  6. MySQL5.7本地首次登录win10报错修改

    1.打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件.(Win10默认安装,my.ini在C:\ProgramData\MySQL\M ...

  7. js事件委托或事件代理

    起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...

  8. 06007_redis数据存储类型——hash

    1.概述 (1)Redis中的Hash类型可以看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息,如Username.Password和Age等: ...

  9. mybatis源码阅读-执行器Executor(四)

    说明 前面二看到了 sqlSession最终是找到MapperStatement然后委托给Executer执行的 Executer到底做了什么 接口定义 public interface Execut ...

  10. [hdu2222] [AC自动机模板] Keywords Search [AC自动机]

    AC自动机模板,注意!ch,Fail,lab数组的大小不是n而是节点个数,需要认真计算! #include <iostream> #include <algorithm> #i ...