首页 >php教程 >PHP源码 >可以ping端口的php函数

可以ping端口的php函数

PHP中文网
PHP中文网原创
2016-05-25 17:15:431294浏览


<?php
/*
 * @author     xujiajay
 * @date       2010-10-7
 * @email      xujiaphp@gmail.com
 * @function   可以ping端口的php函数
 *
 */
	error_reporting(E_ERROR);
	header("content-Type: text/html; charset=utf-8");
	set_time_limit(120);
	$host = isset($_POST[&#39;url&#39;]) ? chop(str_replace(&#39;http://&#39;,&#39;&#39;,$_POST[&#39;url&#39;])) : &#39;www.baidu.com&#39;;
	$port = isset($_POST[&#39;duankou&#39;]) ? chop($_POST[&#39;duankou&#39;]) : &#39;80&#39;;
	$num  = 10;
	function microtime_float()
	{
	        list($usec, $sec) = explode(" ", microtime());
	        return ((float)$usec + (float)$sec);
	}
	function getsoft($host,$port)
	{
	        $fp = @fsockopen($host,$port,&$errno,&$errstr,3);
	        if(!$fp) return &#39;unknown&#39;;
	        $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
	        @fputs($fp,$get);
	        $data = &#39;&#39;;
	        while ($fp && !feof($fp))
	        $data .= fread($fp, 1024);
	        @fclose($fp);
	        $array = explode("\n",$data);
	        $k = 2;
	        for($i = 0;$i < 20;$i++)
	        {
	                if(stristr($array[$i],&#39;Server&#39;)){$k = $i; break;}
	        }
	        if(!stristr($array[$k],&#39;Server&#39;)) return &#39;unknown&#39;;
	        else return str_replace(&#39;Server&#39;,&#39;服务器软件&#39;,$array[$k]);
	}
	function ping($host,$port)
	{
	        $time_start = microtime_float();
	        $ip = gethostbyname($host);
	        $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
	        if(!$fp) return &#39;Request timed out.
	&#39;."\r\n";
	        $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
	        @fputs($fp,$get);
	        @fclose($fp);
	        $time_end = microtime_float();
	        $time = $time_end - $time_start;
	        $time = ceil($time * 1000);
	        return &#39;Reply from &#39;.$ip.&#39;: time=&#39;.$time.&#39;ms
	&#39;;
	}
	if(isset($_POST[&#39;url&#39;]) && isset($_POST[&#39;duankou&#39;]))
	{
	        echo &#39;&#39;.getsoft($host,$port).&#39;
	
	&#39;;
	        echo &#39;Pinging &#39;.$host.&#39; [&#39;.gethostbyname($host).&#39;] with Port:&#39;.$port.&#39; of data:
	
	&#39;."\r\n";
	        ob_flush();
	        flush();
	        for($i = 0;$i < $num;$i++)
	        {
	                echo ping($host,$port);
	                ob_flush();
	                flush();
	                sleep(1);
	        }
	}
?>域名/IP: 
端口:

                   

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn