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