UDP 상태정보 확인


pid_ioctl함수의 get명령어로 UDP의 각종 상태를 확인 할 수 있습니다.

$return = pid_ioctl($pid, "get ITEM");

확인 가능한 UDP 상태정보

ITEM 설명 반환 값 반환 형식
srcaddr UDP통신 - 송신 IP주소 예) 192.168.0.1 문자열
srcport UDP통신 - 송신 포트번호 예) 1470 정수
dstaddr UDP통신 - 수신 IP주소 예) 192.168.0.2 문자열
dstport UDP통신 - 수신 포트번호 예) 1470 정수
rxlen 수신 데이터 량[Byte] 예) 200 정수

수신 데이터 크기 확인

UDP수신 데이터 크기는 pid_ioctl함수의 "get rxlen"로 확인할 수 있습니다.

<?php
$rxlen = pid_ioctl($pid, "get rxlen");
?>

사용 예

이 예제는 PHPoC 장치가 UDP 수신 데이터 크기를 반복적으로 확인하다가 수신데이터가 있으면 데이터 크기를 콘솔로 출력하고 스크립트를 종료합니다.

<?php
$rbuf = "";
$pid = pid_open("/mmap/udp0");             // 0번 UDP 열기
pid_bind($pid, "", 1470);                  // 바인딩
do
{
    $rxlen = pid_ioctl($pid, "get rxlen"); // 수신 데이터 크기 확인
    if($rxlen)
    {
        pid_recvfrom($pid, $rbuf, $rxlen); // 데이터 수신
        echo "$rxlen bytes\r\n";           // 수신 데이터 크기 출력
    }
    usleep(100000);
}while($rxlen == 0);                       // 수신 데이터가 없는 동안 반복
pid_close($pid);
?>