Получение статуса UDP


Чтобы получить статус UDP, необходима команда функции pid_ioctl.

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

Доступные статусы/состояния UDP

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);