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_INETInternet-протоколи IPv4. TCP та UDP – це стандартні протоколи цього сімейства протоколів.
AF_INET6Internet-протоколи 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 також можуть бути використані.

Стандартні протоколи

НазваниеОпис
icmpICMP (Internet Control Message Protocol, протокол міжмережевих керуючих повідомлень) використовується переважно шлюзами та хостами для повідомлення про помилки передачі датаграм. Команда "ping" (присутня у більшості сучасних операційних систем) - це приклад використання протоколу ICMP.
udpUDP (User Datagram Protocol, протокол користувальницьких датаграм) - це протокол без встановлення з'єднання, ненадійний, протокол із фіксованою довжиною записів. Через ці аспекти, UDP вимагає мінімальної кількості службової інформації.
tcpTCP (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).

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