fsockopen

(PHP 4, PHP 5, PHP 7, PHP 8)

fsockopen — Відкриває з'єднання з інтернет-сокетом або доменним сокетом Unix

Опис

fsockopen(    string $hostname,    int $port = -1,    int &$error_code = null,    string &$error_message = null,    ?float $timeout = null): resource|false

Устанавливает соединение с сокетом ресурсаhostname

PHP підтримує цільові ресурси в інтернеті та Unix-доменах у тому вигляді, як вони описані в Список підтримуваних транспортних протоколів. Список підтримуваних транспортів можна отримати за допомогою функції stream_get_transports()

За умовчанням сокет буде відкритий у режимі блокування. Переключити його в неблокуючий режим можна функцією stream_set_blocking()

stream_socket_client() виконує аналогічну функцію, але надає ширший вибір налаштувань з'єднання, що включає встановлення неблокуючого режиму та можливість надання потокового контексту.

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

hostname

Якщо встановлена Підтримка OpenSSL, можна використовувати SSL або TLS-протоколи з'єднань поверх TCP/IP при підключенні до віддаленого хоста. Для цього перед hostnameнужно добавить префиксssl://илиtls://

port

Номер порту. Його можна не вказувати, передавши -1 для тих протоколів, які не використовують порти, наприклад unix://

error_code

Якщо цей параметр надати, у разі виникнення помилки системного виклику функції connect() він прийматиме номер цієї помилки.

Если значение параметраerror_code одно , а функція повернула false, отже помилка сталася до виклику connect(). Найчастіше це свідчить про проблеми при ініціалізації сокету.

error_message

Повідомлення про помилку у вигляді рядка.

timeout

Время ожидания соединения в секундах. Если**null**, використовується налаштування php.ini default_socket_timeout

Зауваження :

Якщо потрібно встановити час очікування/запису даних через сокет, використовуйте функцію stream_set_timeout(), т.к. параметрtimeout функції fsockopen() обмежує лише час процесу встановлення з'єднання із сокетом.

Значення, що повертаються

fsockopen() повертає файловий покажчик, який можна використовувати з функціями, що працюють із файлами (такі як fgets() fgetss() fwrite() fclose() і feof()). Якщо дзвінок завершиться невдало, функція поверне false

Помилки

Викликає помилку рівня E_WARNING, якщо hostname не є допустимим доменом.

список змін

ВерсияОпис
8.0.0timeout тепер допускає значення null.

Приклади

Приклад #1 Приклад використання fsockopen()****

Loading...

Приклад #2 Використання UDP-з'єднання

Приклад нижче демонструє, як отримати день та час від UDP-служби "daytime" (порт 13) на машині.

Loading...

Примітки

Зауваження :

Залежно від оточення, домену Unix або часу очікування встановлення підключення може бути недоступним.

Увага

Іноді UDP-сокети набувають статусу відкритих, навіть якщо віддалений хост недоступний. Помилка проявить себе тільки під час читання або запису даних з цього сокету. Причина цього полягає в тому, що протокол UDP передає дані без встановлення з'єднання, а це означає, що операційна система не встановлює та не тримає з'єднання із сокетом, доки не почнеться передача даних.

Зауваження: Якщо вказати числову адресу IPv6 (наприклад, fe80::1) Ви повинні укладати його в квадратні дужки. Наприклад, tcp://[fe80::1]:80

Дивіться також

  • pfsockopen() - Відкриває постійне з'єднання з інтернет-сокетом або доменним сокетом Unix
  • stream_socket_client() - Відкрити з'єднання з інтернет-сокетом або доменним сокетом Unix
  • stream_set_blocking() - Встановити блокуючий/неблокуючий режим у потоці
  • stream_set_timeout() - Встановити значення часу очікування потоку
  • fgets() - Читає рядок із файлу
  • fgetss() - Читає рядок з файлу та видаляє HTML-теги
  • fwrite() - Бінарно-безпечний запис у файл
  • fclose() - Закриває відкритий дескриптор файлу
  • feof() - Перевіряє, чи кінець файлу досягнуто
  • socket_connect() - Починає з'єднання із сокетом
  • Модуль Curl