php實(shí)現(xiàn)的ping端口函數(shù)實(shí)例
本文實(shí)例講述了php實(shí)現(xiàn)的ping端口函數(shù)。分享給大家供大家參考。
具體實(shí)現(xiàn)代碼如下:
<?php
/*
* @author xujiajay
* @date 2010-10-7
* @function 可以ping端口的php函數(shù)
*
*/
error_reporting(E_ERROR);
header("content-Type: text/html; charset=utf-8");
set_time_limit(120);
$host = isset($_POST['url']) ? chop(str_replace('http://','',$_POST['url'])) : 'www.baidu.com';
$port = isset($_POST['duankou']) ? chop($_POST['duankou']) : '80';
$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 'unknown';
$get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
@fputs($fp,$get);
$data = '';
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],'Server')){$k = $i; break;}
}
if(!stristr($array[$k],'Server')) return 'unknown';
else return str_replace('Server','服務(wù)器軟件',$array[$k]);
}
function ping($host,$port)
{
$time_start = microtime_float();
$ip = gethostbyname($host);
$fp = @fsockopen($host,$port,&$errno,&$errstr,1);
if(!$fp) return 'Request timed out.'."\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 'Reply from '.$ip.': time='.$time.'ms';
}
if(isset($_POST['url']) && isset($_POST['duankou']))
{
echo '<font color="#FF0000">'.getsoft($host,$port).'</font>';
echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data:'."\r\n";
ob_flush();
flush();
for($i = 0;$i < $num;$i++)
{
echo ping($host,$port);
ob_flush();
flush();
sleep(1);
}
}
?>
<form method="POST">
域名/IP:<input type="text" name="url" value="<?php echo $host;?>" size="50">
端口:<input type="text" name="duankou" value="<?php echo $port;?>" size="10">
<input type="submit" value="ping">
</form>
希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php中使用exec,system等函數(shù)調(diào)用系統(tǒng)命令的方法(不建議使用,可導(dǎo)致安全問題)
PHP作為一種服務(wù)器端的腳本語(yǔ)言,像編寫簡(jiǎn)單,或者是復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍2012-09-09你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí)
這篇文章主要介紹了你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí),本文講解了PHP浮點(diǎn)數(shù)、PHP數(shù)字的臨界值,精度損失等問題,需要的朋友可以參考下2015-05-05PHP魔術(shù)方法之__call與__callStatic使用方法
這篇文章主要介紹了PHP魔術(shù)方法之__call與__callStatic方法,需要的朋友可以參考下2017-07-07php獲取網(wǎng)頁(yè)內(nèi)容方法總結(jié)
用php抓取頁(yè)面的內(nèi)容在實(shí)際的開發(fā)當(dāng)中是非常有用的,如作一個(gè)簡(jiǎn)單的內(nèi)容采集器,提取網(wǎng)頁(yè)中的部分內(nèi)容等等2008-12-12PHP實(shí)現(xiàn)JWT的Token登錄認(rèn)證
這篇文章通過實(shí)例代碼介紹了PHP實(shí)現(xiàn)JWT的Token登錄認(rèn)證的方式,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12PHP簡(jiǎn)單裝飾器模式實(shí)現(xiàn)與用法示例
這篇文章主要介紹了PHP簡(jiǎn)單裝飾器模式實(shí)現(xiàn)與用法,結(jié)合具體實(shí)例形式分析了php裝飾器模式的原理、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-06-06