PHP判断端口是否打开的代码
程序员文章站
2023-12-28 13:20:16
...
跳至
<?php 2 $host = 'www.baidu.com'; //要ping的地址,也可以是IP 3 $port = '80'; //要ping的端口 4 $num = 3; 5 function microtime_float() 6 { 7 list($usec, $sec) = explode(" ", microtime()); 8 return ((float)$usec + (float)$sec); 9 } 10 function ping($host,$port) 11 { 12 $time_start = microtime_float(); 13 $ip = gethostbyname($host); 14 $fp = @fsockopen($host,$port,&$errno,&$errstr,1); 15 if(!$fp) return 'replay time out!'; 16 $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n"; 17 @fputs($fp,$get); 18 @fclose($fp); 19 $time_end = microtime_float(); 20 $time = $time_end - $time_start; 21 $time = ceil($time * 1000); 22 return 'Reply from '.$ip.': time='.$time.'ms '; 23 } 24 echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data: '."\r\n"; 25 for($i = 0;$i < $num;$i++) 26 { 27 ping($host,$port); 28 sleep(1); 29 ob_flush(); 30 flush(); 31 } 32 ?>