-
반응형
function ping($host) {
//전송 데이터 (32byte 테스트)$package="\x08\x00\x19\x2f\x00\x00\x00\x00\x70\x69\x6e\x67";
//icmp프로토콜 소켓생성
$socket=socket_create(AF_INET,SOCK_RAW,getprotobyname('icmp'));
//타임아웃 설정
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1,"usec"=>0));
//소켓연결!
socket_connect($socket,$host,null);
//딜레이 시간 기록
list($start_usec,$start_sec)=explode(" ",microtime());
$start_time=((float)$start_usec+(float)$start_sec);
socket_send($socket,$package,strlen($package),0);
//데이터를 받아온다.
$result=-1;
$flag="";
$flag=@socket_recv($socket, $buf, 1024,0);
if($flag!=""){ //데이터를 받아왔다면 걸린시간 계산
list($end_usec,$end_sec)=explode(" ",microtime());
$end_time=((float)$end_usec+(float)$end_sec);
$total_time=$end_time-$start_time;
$result=$total_time;
}
//소켓종료
socket_close($socket);
//결과 리턴
if($result==-1) return -1; //테스트 실패했을경우 -1리턴
else return round($result*1000,3); //소수점 3째자리까지 반올림 (시간 단위는 ms)
}ping("아이피주소") 식으로 사용하면 됩니다.
사용하기전에 PHP확장(PHP Extension)에서 php_sockets.dll 을 추가해줘야합니다.
'분류전' 카테고리의 다른 글
IP Scanner (0) 2010.02.10 Mp3toKmp (0) 2010.02.04 VMWARE로 Ljnux RedHat 9.0 설치하기 (0) 2010.01.27 리눅스 다운 받을 때 i386과 x86_64의 차이점 (0) 2010.01.27 핫픽스(Hot Fix)란? (0) 2010.01.27