array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.socket-create.php', 1 => 'socket_create', ), 'up' => array ( 0 => 'ref.sockets.php', 1 => 'Функции сокета', ), 'prev' => array ( 0 => 'function.socket-create-pair.php', 1 => 'socket_create_pair', ), 'next' => array ( 0 => 'function.socket-export-stream.php', 1 => 'socket_export_stream', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/sockets/functions/socket-create.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create — Создаёт сокет (конечную точку для обмена информацией)
Создаёт и возвращает экземпляр 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). |