socket_recvfrom
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Отримує дані із сокету, незалежно від того, під'єднаний він чи ні
Опис
socket_recvfrom( Socket $socket, string &$data, int $length, int $flags, string &$address, int &$port = null): int|false
Функцияsocket_recvfrom() отримує length
байт даних у data
из адресаaddress
на портуport
(якщо сокет не типу AF_UNIX
) використовуючи сокет socket
Функцияsocket_recvfrom() може бути використана для отримання даних як з підключених, так і з не підключених сокетів. Додатково один або більше прапорів можуть бути вказані для того, щоб змінити поведінку функції.
Параметри address
иport
повинні бути передані за посиланням. Якщо сокет не орієнтований на з'єднання, address
має бути встановлена як адреса інтернет-протоколу віддаленого хоста, або як шлях до сокету UNIX. Якщо сокет не орієнтований на з'єднання, address
повинен бути **null
**Дополнительно,port
повинен містити порт дистанційного хоста для не підключених сокетів типу AF_INET
і AF_INET6
Зауваження: Ця функція безпечна для обробки даних у двійковій формі.
Список параметрів
socket
Параметрsocket
має бути екземпляром Socket, попередньо створеним за допомогою функції socket_create().
data
Отримані дані будуть передані до змінної, вказаної за допомогою параметра data
length
З віддаленого хоста буде отримано до length
байт.
flags
Значение параметраflags
може бути будь-якою комбінацією наступних прапорів, об'єднаних за допомогою бінарного оператора OR ( ) operator.
Можливі значення для параметра flags
Флаг | Опис |
---|---|
MSG_OOB | Обробляти позасмугові (out-of-band) дані. |
MSG_PEEK | Отримувати дані із початку черги, не видаляючи їх. |
MSG_WAITALL | Блокувати виконання скрипту доти, доки як мінімум length не буде отримано. Однак, якщо буде отримано сигнал або віддалений хост від'єднається, функція може повернути менше даних. |
MSG_DONTWAIT | Якщо цей прапор встановлений, функція повернеться навіть якщо зазвичай блокуватиме виконання скрипта. |
address
Якщо сокет типу AF_UNIX
address
- Це шлях до файлу. В іншому випадку, для непід'єднаних сокетів, параметр address
- це IP-адреса, віддаленого хоста, або **null
**якщо сокет орієнтований на з'єднання.
port
Цей аргумент застосовний тільки до сокетів AF_INET
і AF_INET6
, та вказує віддалений порт, з якого будуть отримані дані. Якщо сокет орієнтований на з'єднання, port
будет**null
**
Значення, що повертаються
socket_recvfrom() повертає кількість отриманих байт або false
, якщо сталася помилка. Фактичний код помилки можна отримати за допомогою виклику функції socket_last_error(). Цей код помилки може бути переданий функції socket_strerror() для отримання текстового опису помилки.
список змін
Версия | Опис |
---|---|
8.0.0 | socket тепер екземпляр класу Socket; раніше був ресурсом (resource). |
Приклади
Приклад #1 Приклад використання socket_recvfrom()****
Loading...
Цей приклад відкриє UDP-сокет на порту 1223 за адресою 127.0.0.1 та виведе максимум 12 символів, отриманих з віддаленого хоста.
Дивіться також
- socket_recv() - Отримує дані із приєднаного сокету
- socket_send() - Надсилає дані в приєднаний сокет
- socket_sendto() - Надсилає повідомлення до сокету, незалежно від того, під'єднаний він чи ні
- socket_create() - створює сокет (кінцеву точку для обміну інформацією)