pid_peek()


int pid_peek ( int $pid, mixed &$rbuf [ , int $rlen ] )

Описание

pid_peek() пытается прочитать до $len байты из порта или периферического $pid в буфер $buf без удаления данных из буфера внутреннего устройства, так что его можно прочитать позже. Данная функция полезна для проверки содержимого данных перед чтением.

Параметры

Возвращение значений

В случае успеха, количество прочитанных байтов возвращается, в противном случае появляется PHP error.
Однако, это не является ошибкой, если число меньше, чем число запрошенных байтов. Это случается в том случае, если длина доступных данных в буфере устройства меньше желаемой длины.

Пример

<?php
$buf = "";

$pid = pid_open("/mmap/tcp0");
pid_connect($pid, "10.3.0.10", 1470);
do
{
    $state = pid_ioctl($pid, "get state");  // get the current TCP state
    if($state == TCP_CLOSED)  // if TCP connection attempt fails, try to connect again
    {
        pid_connect($pid, "10.3.0.10", 1470);
        sleep(1);
    }
}while($state != TCP_CONNECTED);
echo "TCP connected\r\n";

while(1)
{
    $len = pid_peek($pid, $buf);  // reading $buf but leaving data in the buffer
    if($len == 0) continue;

    $pos = strpos($buf, "\r\n");  // checking if there is "\r\n" string
    if($pos === FALSE) continue;

    $len = pid_recv($pid, $buf, $pos+2);  // reading data (ending "\r\n") from ther buffer
    echo "$buf";
}
?>

Смотрите также

pid_read() / pid_recv() / pid_recvfrom()

Примечание

Отсутствуют.