pid_ioctl함수의 get명령어로 UDP의 각종 상태를 확인 할 수 있습니다.
$return = pid_ioctl($pid, "get ITEM");
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);
?>