이 기사의 예에서는 PHP에서 구현된 ping 포트 기능을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요.
구체적인 구현 코드는 다음과 같습니다.
/*
* @author xujiajay
* @날짜 2010-10-7
* @function 可以ping端口的php函数
*
*/
error_reporting(E_ERROR);
header("content-Type: text/html; charset=utf-8");
set_time_limit(120);
$host = isset($_POST['url']) ? 찹(str_replace('http://','',$_POST['url'])) : 'www.baidu.com';
$port = isset($_POST['duankou']) ? 찹($_POST['duankou']) : '80';
$num = 10;
함수 microtime_float()
{
list($usec, $sec) = 폭발(" ", 마이크로타임());
return ((float)$usec (float)$sec);
}
함수 getsoft($host,$port)
{
$fp = @fsockopen($host,$port,&$errno,&$errstr,3);
if(!$fp)는 '알 수 없음'을 반환합니다.
$get = "GET / HTTP/1.1rnHost:".$host."rnConnection: Closernrn";
@fputs($fp,$get);
$data = '';
동안($fp && !feof($fp))
$data .= fread($fp, 1024);
@fclose($fp);
$array = 폭발("n",$data);
$k = 2;
for($i = 0;$i < 20;$i )
{
if(stristr($array[$i],'서버')){$k = $i; 휴식;}
}
if(!stristr($array[$k],'서버')) return '알 수 없음';
그렇지 않으면 str_replace('Server','服务器软件',$array[$k]);
를 반환합니다.
}
함수 ping($host,$port)
{
$time_start = microtime_float();
$ip = gethostbyname($host);
$fp = @fsockopen($host,$port,&$errno,&$errstr,1);
if(!$fp) return '요청 시간이 초과되었습니다.'."rn";
$get = "GET / HTTP/1.1rnHost:".$host."rnConnection: Closernrn";
@fputs($fp,$get);
@fclose($fp);
$time_end = microtime_float();
$time = $time_end - $time_start;
$time = ceil($time * 1000);
return ''.$ip.'에서 답장: time='.$time.'ms';
}
if(isset($_POST['url']) && isset($_POST['duankou']))
{
echo ''.getsoft($host,$port).'';
echo ''.$host'를 핑합니다.' ['.gethostbyname($host).'] 포트:'.$port.' 데이터:'."rn";
ob_flush();
플러시();
for($i = 0;$i < $num;$i )
{
에코 핑($host,$port);
ob_flush();
플러시();
수면(1);
}
}
?>
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.