stream_socket_server

(PHP 5, PHP 7, PHP 8)

stream_socket_server — Створює інтернет-сокет або доменний сокет Unix

Опис

stream_socket_server(    string $address,    int &$error_code = null,    string &$error_message = null,    int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,    ?resource $context = null): resource|false

Створює сокет потоку чи датаграми на вказаному address

Ця функція створює тільки сокет. Щоб почати приймати з'єднання, використовуйте stream_socket_accept()

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

address

Тип сокету, що створюється, визначається по транспорту, вказаному з використанням стандартного форматування URL: transport://target

Для доменних сокетів інтернету (AF_INET), таких як TCP та UDP, частина targetпараметраremote_socket повинна складатися з імені хоста або IP-адреси з наступною двокрапкою та номером порту. Для доменних сокетів Unix частина target має вказувати на файл сокета у файловій системі.

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

error_code

Якщо необов'язкові аргументи error_codeиerror_message присутні, вони будуть встановлені для вказівки дійсного рівня системної помилки, яка відбувається при системних викликах socket() bind()иlisten(). Якщо значення, що повертається в error_code, одно та функція повернула **false**Це означає, що помилка сталася до виклику bind(). Швидше за все це сталося через проблему ініціалізації сокету. Візьміть до уваги, що аргументи error_codeиerror_message повинні завжди передаватися за посиланням.

error_message

Смотрите описание параметраerror_code

flags

Бітова маска, яка може бути встановлена ​​в будь-якій комбінації прапорів для створення сокету.

Зауваження :

Для UDP-сокетів ви повинні використовувати STREAM_SERVER_BIND як параметр flags

context

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

Повертає створений потік або **false**в случае возникновения ошибки.

список змін

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

Приклади

Приклад #1 Приклад використання серверних сокетів TCP

Loading...

Приклад нижче показує, як працювати як сервер часу, який може відповідати на запити часу, як показано в прикладі функції stream_socket_client()

Зауваження: Більшість систем вимагають доступу до прав root для створення серверного сокету на порту нижче, ніж 1024.

Приклад #2 Приклад використання серверних сокетів UDP

Loading...

Примітки

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

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

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