zoukankan      html  css  js  c++  java
  • php socket 循环ping ip,显示能ping通的IP地址

    预览

    index.php 代码

    <?php
    function ping2($host) {
        $port = 80;
        $buff = "123456789"; //测试字符串
    
        // ipv6
        //$socket = @socket_create(AF_INET6, SOCK_DGRAM, SOL_UDP);
    
        // ipv4
        $socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    
        //发送超时1秒
        socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));
        //接收超时1秒
        socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 1, "usec" => 0));
    
        if (!$socket) return false;
        
        @socket_sendto($socket, $buff, strlen($buff), 0, $host, $port);
        $read = array($socket);
        $write = NULL;
        $except = NULL;
        if (@socket_select($read, $write, $except, 1) > 0) {
            return true;
        } else {
            return false;
        }
        @socket_close($socket);
    }
    
    
    function ping($host) {
        $icmp_socket = socket_create(AF_INET, SOCK_RAW, 1);
        socket_set_block($icmp_socket);
        socket_set_option($icmp_socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));
    
        /* connect to socket */
        socket_connect($icmp_socket, $host, null);
    
        /* 创建一个发送包*/
        $request = "x08x00x19x2fx00x00x00x00x70x69x6ex67";
    
        socket_send($icmp_socket, $request, strlen($request), 0);
    
        if (@socket_read($icmp_socket, 255)) {
            return true;
        } else {
            return false;
        }
        socket_close($icmp_socket);
    }
    
    $ip = $_GET['ip'];
    if ($ip) {
        $result = ping($ip);
        if ($result) {
            echo "success";
        }
    } else {
        $base = $_GET['base'] ?: "192.168.1";
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Ping</title>
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    </head>
    <body>
    <!-- 
    url访问方式:
    http://localhost/ping.php
    http://localhost/ping.php?base=192.168.137
    -->
    <script type="text/javascript">
        $(function () {
            var num = 1;
            var ticket = setInterval(function () {
                if (num > 255) {
                    clearInterval(ticket);
                    return false;
                }
                var ip = '<?=$base?>.' + num;
                $.get("/ping.php?ip=" + ip, function (data) {
                    console.log(data)
                    if (data === 'success') {
                        $("body").append(ip + "<br/>")
                    }
                })
                num++;
            }, 200)
        })
    </script>
    </body>
    </html>
    <?php } ?>
    

    今天进步一点点,明天梦想近点点!

  • 相关阅读:
    @ModelAttribute注解详细使用
    Spring MVC使用注解实现账户注册与登陆
    @PathVariable、@RequestHeader与@CookieValue注解的使用案例
    IDEA搭建我的第一个Spring MVC应用(附使用注解实现)
    JDBC自定义工具类
    JDBC与MySQL实现分页查询技术
    JavaWeb实战——记录网站上一次访问时间
    微信小程序使用setData修改数组中的指定下标的属性值
    Centos6.x 无法 ping 外网 --- 已解决
    Ckeditor失去焦点前保留光标位置
  • 原文地址:https://www.cnblogs.com/qq917937712/p/14763737.html
Copyright © 2011-2022 走看看