socket_create
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create — Створює сокет (кінцеву точку обміну інформацією)
Опис
socket_create(int $domain, int $type, int $protocol): Socket|false
Створює та повертає екземпляр Socket, також називається як кінцева точка обміну інформацією. Типове мережне з'єднання і двох сокетів, один із яких виконує роль клієнта, а інший виконує роль сервера.
Список параметрів
domain
Параметрdomain
визначає сімейство протоколів, які використовуються сокетами.
Доступні сімейства адрес/протоколів
Семейство | Опис |
---|---|
AF_INET | Internet-протоколи IPv4. TCP та UDP – це стандартні протоколи цього сімейства протоколів. |
AF_INET6 | Internet-протоколи IPv6. TCP та UDP – це стандартні протоколи цього сімейства протоколів. |
AF_UNIX | Сімейство протоколів для локального обміну даними. Висока ефективність та низькі накладні витрати роблять його чудовим видом IPC (міжпроцессної взаємодії). |
type
Параметрtype
визначає тип обміну даними, який використовуватиметься сокетом.
Доступні типи сокетів
Тип | Опис |
---|---|
SOCK_STREAM | Забезпечує послідовні, надійні, повнодуплексні, байтові потоки із встановленням з'єднання. Може підтримуватись механізм передачі позасмугових (out-of-band) даних. Протокол TCP заснований цьому типі сокетів. |
SOCK_DGRAM | Підтримує датаграми (ненадійні повідомлення без встановлення з'єднання фіксованої максимальної довжини). Протокол UDP ґрунтується на цьому типі сокетів. |
SOCK_SEQPACKET | Надає послідовну, надійну, двонаправлену передачу датаграм, що базується на з'єднаннях, з фіксованою максимальною довжиною. Споживач повинен читати весь пакет повністю за кожної ітерації читання. |
SOCK_RAW | Надає доступ за непідготовленим (raw) мережевим протоколом. Цей спеціальний тип сокету може бути використаний для ручного створення будь-якого типу протоколу. Стандартне використання цього сокетів - виконання запитів ICMP (таких як ping). |
SOCK_RDM | Надає надійний рівень датаграм, що не гарантує збереження порядку. Швидше за все, це сімейство протоколів не реалізовано у вашій операційній системі. |
protocol
Параметрprotocol
вказує конкретний протокол у заданому сімействі протоколів domain
, який буде використовуватися в обміні даними зі створеним сокетом. Відповідне значення може бути отримано на ім'я за допомогою функції getprotobyname(). Якщо бажаний протокол TCP чи UDP, то відповідні константи SOL_TCP
і SOL_UDP
також можуть бути використані.
Стандартні протоколи
Название | Опис |
---|---|
icmp | ICMP (Internet Control Message Protocol, протокол міжмережевих керуючих повідомлень) використовується переважно шлюзами та хостами для повідомлення про помилки передачі датаграм. Команда "ping" (присутня у більшості сучасних операційних систем) - це приклад використання протоколу ICMP. |
udp | UDP (User Datagram Protocol, протокол користувальницьких датаграм) - це протокол без встановлення з'єднання, ненадійний, протокол із фіксованою довжиною записів. Через ці аспекти, UDP вимагає мінімальної кількості службової інформації. |
tcp | TCP (The Transmission Control Protocol, протокол управління передачею) - це надійний, що базується на з'єднаннях, потокоорієнтований, повнодуплексний протокол. TCP гарантує, що всі пакети даних будуть отримані в порядку, в якому вони були відправлені. Якщо будь-який пакет було втрачено під час передачі даних, TCP буде автоматично передавати пакет повторно до тих пір, поки хост призначення не підтвердить цей пакет. З метою надійності та продуктивності, реалізація протоколу TCP сама вибирає відповідні межі октету нижче рівня обміну датаграмами. Таким чином, програми, що використовують TCP, повинні надавати можливість часткової передачі записів. |
Значення, що повертаються
Функцияsocket_create() повертає екземпляр Socket у разі успішного виконання, або false
у разі виникнення помилки. Код помилки можна отримати за допомогою виклику функції socket_last_error(). Ця помилка може бути передана функції socket_strerror() для отримання текстового опису помилки.
Помилки
Якщо вказано неправильний параметр domain
илиtype
, функцияsocket_create() буде використовувати за замовчуванням значення AF_INET
і SOCK_STREAM
відповідно, і додатково до цього видасть повідомлення E_WARNING
список змін
Версия | Опис |
---|---|
8.0.0 | У разі успішного виконання функція повертає екземпляр Socket; раніше повертався ресурс (resource). |
Дивіться також
- socket_accept() - приймає з'єднання на сокеті
- socket_bind() - Прив'язує ім'я до сокету
- socket_connect() - Починає з'єднання із сокетом
- socket_listen() - Прослуховує вхідні з'єднання на сокеті
- socket_last_error() - Повертає останню помилку на сокеті
- socket_strerror() - Повертає рядок, що описує помилку сокету