stream_socket_client
(PHP 5, PHP 7, PHP 8)
stream_socket_client — Відкрити з'єднання з інтернет-сокетом або доменним сокетом Unix
Опис
stream_socket_client( string $address, int &$error_code = null, string &$error_message = null, ?float $timeout = null, int $flags = STREAM_CLIENT_CONNECT, ?resource $context = null): resource|false
Починає з'єднання потоку або датаграми з віддаленим сокетом, зазначеним параметром address
. Тип сокету, що створюється, визначається по транспорту, вказаному з використанням стандартного форматування URL: transport://target
. Для інтернет-сокетів, (AF_INET) таких, як TCP та UDP, частина target
параметраaddress
повинна складатися з імені хоста або IP-адреси, за яким слідує двокрапка та номер порту. Для доменних сокетів Unix, частина target
має вказувати на файл сокета у файловій системі.
Зауваження :
За замовчуванням потік буде відкритий у режимі блокування. Ви можете переключити його в режим неблокування, використовуючи функцію stream_set_blocking()
Список параметрів
address
Адреса віддаленого сокету для з'єднання.
error_code
Буде надано номер системної помилки, якщо з'єднання не вдалося встановити.
error_message
Буде надіслано повідомлення про системну помилку, якщо з'єднання не вдалося встановити.
timeout
Число секунд, протягом яких має відбутися час очікування системного виклику connect()
По умолчанию используется значениеdefault_socket_timeout
Зауваження: Цей параметр застосовується, лише якщо спроба асинхронного з'єднання не відбувається.
Зауваження :
Щоб вказати час очікування для читання/запису даних через сокет, скористайтеся функцією stream_set_timeout(), так как параметр
timeout
застосовується лише під час створення з'єднання через сокет.
flags
Поле бітової маски, яке може набувати значення будь-якої комбінації прапорів з'єднання. В даний час набір з'єднань прапорів обмежений такими значеннями STREAM_CLIENT_CONNECT
(по умолчанию),STREAM_CLIENT_ASYNC_CONNECT
і STREAM_CLIENT_PERSISTENT
context
Діючий ресурс контексту, створений за допомогою функції stream_context_create()
Значення, що повертаються
У разі успішного виконання повертається ресурс потоку, який може бути використаний з іншими файловими функціями (такими як fgets() fgetss() fwrite() fclose(), иfeof()), у разі виникнення помилки повертається false
Помилки
У разі невдалого виклику функції аргументи error_code
иerror_message
будуть заповнені системною помилкою, яка сталася під час системного виклику connect()
. Якщо значення, повернене в аргументі error_code
одно и функция возвратила значение**false
**Це означає, що помилка сталася до виклику connect()
. Це сталося, швидше за все, через проблему ініціалізації сокету. Візьміть до уваги, що аргументи error_code
иerror_message
завжди передаватимуться за посиланням.
список змін
Версия | Опис |
---|---|
8.0.0 | timeout иcontext тепер допускають значення null. |
Приклади
Приклад #1 Приклад використання stream_socket_client()****
Loading...
Приклад #2 Використання UDP-з'єднання
Отримання дня та часу від UDP-сервісу "daytime" (порт 13) на localhost.
Loading...
Примітки
Увага
UDP-сокети іноді можуть відкриватися без помилки, навіть якщо віддалений хост недоступний. Помилка стане помітною тільки коли ви читатимете або писатимете дані з/в сокет. Причина цього в тому, що UDP - це протокол без з'єднання, що означає, що операційна система не намагається встановити з'єднання з сокетом, поки їй насправді не потрібно відправити або отримати дані.
Зауваження: Якщо вказати числову адресу IPv6 (наприклад,
fe80::1
) Ви повинні укладати його в квадратні дужки. Наприклад,tcp://[fe80::1]:80
Зауваження :
Залежно від оточення, Unix-домени або довільний час очікування з'єднання можуть бути недоступними. Список доступних транспортів може бути отриманий за допомогою функції stream_get_transports(). Дивіться список вбудованих транспортів на сторінці Список підтримуваних транспортних протоколів
Дивіться також
- stream_socket_server() - Створює інтернет-сокет або доменний сокет Unix
- stream_set_blocking() - Встановити блокуючий/неблокуючий режим у потоці
- stream_set_timeout() - Встановити значення часу очікування потоку
- stream_select() - Запускає еквівалент системного виклику select() на заданих масивах потоків з часом очікування, вказаним параметрами seconds та microseconds
- fgets() - Читає рядок із файлу
- fgetss() - Читає рядок з файлу та видаляє HTML-теги
- fwrite() - Бінарно-безпечний запис у файл
- fclose() - Закриває відкритий дескриптор файлу
- feof() - Перевіряє, чи кінець файлу досягнуто
- Опції cURL