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.0timeoutи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