Сокетные Функции
PHP Manual

socket_recvfrom

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_recvfromПолучает данные из сокета, независимо от того, подсоединён он или нет

Описание

int socket_recvfrom ( resource $socket , string &$buf , int $len , int $flags , string &$name [, int &$port ] )

Функция socket_recvfrom() получает len байт данных в buf из адреса name на порту port (если сокет не типа AF_UNIX) используя сокет socket. Функция socket_recvfrom() может быть использована для извлечения данных как из подключенных, так и из не подключенных сокетов. Дополнительно, один или более флагов могут быть указаны для того, чтобы изменить поведение функции.

Параметры name и port должны быть переданы по ссылке. Если сокет не ориентированный на соединение, name должен быть установлен как интернет адрес удаленного хоста, либо как путь к сокету UNIX. Если сокет не ориентированный на соединение, name должен быть NULL. Дополнительно, port должен содержать порт удаленного хоста для не подключенных сокетов типа AF_INET и AF_INET6.

Список параметров

socket

Параметр socket должен быть ресурсом сокета, предварительно созданным при помощи функции socket_create().

buf

Полученные данные будут переданы в переменную, указанную при помощи параметра buf.

len

С удалённого хоста будет получено до len байт.

flags

Значение параметра flags может быть любой комбинацией следующих флагов, объединённых при помощи двоичного оператора OR (|) operator.

Возможные значения для параметра flags
Флаг Описание
MSG_OOB Обрабатывать внеполосные (out-of-band) данные.
MSG_PEEK Получать данные из начала очереди не удаляя их.
MSG_WAITALL Блокировать выполнение скрипта до тех пор, пока как минимум len не будет получено. Однако, если будет получен сигнал или удалённый хост отсоединится, функция может возвратить меньше данных.
MSG_DONTWAIT Если этот флаг установлен, функция возвратится даже если обычно она будет блокировать выполнение скрипта.
name

Если сокет типа AF_UNIX, name - это путь к файлу. В ином случае, для неподсоединённых сокетов, параметр name - это IP-адрес, удалённого хоста, или NULL если if the socket is connection-oriented.

port

Этот аргумент применим только к сокетам AF_INET и AF_INET6, и указывает удалённый порт, из которого будут получены данные. If the socket is connection-oriented, port will be NULL.

Возвращаемые значения

socket_recvfrom() возвращает количество полученных байт, или FALSE если произошла ошибка. Фактический код ошибки может быть получен при помощи вызова функции socket_last_error(). Этот код ошибки может быть передан функции socket_strerror() для получения текстового описания ошибки.

Примеры

Пример #1 Пример использования socket_recvfrom()

<?php
error_reporting
(E_ALL E_STRICT);

$socket socket_create(AF_INETSOCK_DGRAMSOL_UDP);
socket_bind($socket'127.0.0.1'1223);

$from '';
$port 0;
socket_recvfrom($socket$buf120$from$port);

echo 
"Получено $buf с удалённого адреса $from и удалённого порта $portPHP_EOL;
?>

Этот пример откроет UDP-сокет на порту 1223 по адресу 127.0.0.1 и выведет максимум 12 символов, полученных с удалённого хоста.

Список изменений

Версия Описание
4.3.0 socket_recvfrom() теперь может работать с двоичными данными.

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


Сокетные Функции
PHP Manual