Чтобы получить статус UDP, необходима команда функции pid_ioctl.
$return = pid_ioctl($pid, "get ITEM");
ITEM/элемент | Описание | Возвращаемое значение | Возвращаемый тип |
---|---|---|---|
srcaddr | source IP address | e.g. 192.168.0.1 | строка |
srcport | source port number | e.g. 1470 | целое число |
dstaddr | destination IP address | e.g. 192.168.0.2 | строка |
dstport | destination port number | e.g. 1470 | целое число |
rxlen | received data size[Byte] | e.g. 200 | целое число |
Чтобы получить размер полученных данных, требуется команда "get rxlen" функции pid_ioctl.
$rxlen = pid_ioctl($pid, "get rxlen");
Данный пример закрывается после вывода информации о полученном размере данных, если данные поступают из сети. Переодически проверяется, есть ли полученные данные.
$rbuf = "";
$pid = pid_open("/mmap/udp0"); // open UDP 0
pid_bind($pid, "", 1470); // binding
do
{
$rxlen = pid_ioctl($pid, "get rxlen"); // get received data size
if($rxlen)
{
pid_recvfrom($pid, $rbuf, $rxlen); // receive data
echo "$rxlen bytes\r\n"; // print size of received data
}
usleep(100000);
}while($rxlen == 0); // while receiving no data
pid_close($pid);