Что такое код socket_create_pair

socket_create_pair

(PHP 4 >= 4.1.0, PHP 5)

socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array

Описание

socket_create_pair() creates two connected and indistinguishable sockets, and stores them in fd. This function is commonly used in IPC (InterProcess Communication).

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

The domain parameter specifies the protocol family to be used by the socket. See socket_create() for the full list.

The type parameter selects the type of communication to be used by the socket. See socket_create() for the full list.

The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname() . If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP, and SOL_UDP can also be used.

See socket_create() for the full list of supported protocols.

Reference to an array in which the two socket resources will be inserted.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.3.0 This function is now re-enabled on Windows platforms.
4.3.0 This function was due to a bug made unavailable on Windows platforms.

Примеры

Пример #1 socket_create_pair() example

/* On Windows we need to use AF_INET */
$domain = ( strtoupper ( substr ( PHP_OS , 0 , 3 )) == ‘WIN’ ? AF_INET : AF_UNIX );

/* Setup socket pair */
if ( socket_create_pair ( $domain , SOCK_STREAM , 0 , $sockets ) === false ) <
echo «socket_create_pair failed. Reason: » . socket_strerror ( socket_last_error ());
>
/* Send and Recieve Data */
if ( socket_write ( $sockets [ 0 ], «ABCdef123\n» , strlen ( «ABCdef123\n» )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 0 ]));
>
if (( $data = socket_read ( $sockets [ 1 ], strlen ( «ABCdef123\n» ), PHP_BINARY_READ )) === false ) <
echo «socket_read() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 1 ]));
>
var_dump ( $data );

/* Close sockets */
socket_close ( $sockets [ 0 ]);
socket_close ( $sockets [ 1 ]);
?>

Пример #2 socket_create_pair() IPC example

= array();
$strone = ‘Message From Parent.’ ;
$strtwo = ‘Message From Child.’ ;

if ( socket_create_pair ( AF_UNIX , SOCK_STREAM , 0 , $ary ) === false ) <
echo «socket_create_pair() failed. Reason: » . socket_strerror ( socket_last_error ());
>
$pid = pcntl_fork ();
if ( $pid == — 1 ) <
echo ‘Could not fork Process.’ ;
> elseif ( $pid ) <
/*parent*/
socket_close ( $ary [ 0 ]);
if ( socket_write ( $ary [ 1 ], $strone , strlen ( $strone )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $ary [ 1 ]));
>
if ( socket_read ( $ary [ 1 ], strlen ( $strtwo ), PHP_BINARY_READ ) == $strtwo ) <
echo «Recieved $strtwo \n» ;
>
socket_close ( $ary [ 1 ]);
> else <
/*child*/
socket_close ( $ary [ 1 ]);
if ( socket_write ( $ary [ 0 ], $strtwo , strlen ( $strtwo )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $ary [ 0 ]));
>
if ( socket_read ( $ary [ 0 ], strlen ( $strone ), PHP_BINARY_READ ) == $strone ) <
echo «Recieved $strone \n» ;
>
socket_close ( $ary [ 0 ]);
>
?>

Смотрите также

  • socket_create() — Create a socket (endpoint for communication)
  • socket_create_listen() — Opens a socket on port to accept connections
  • socket_bind() — Binds a name to a socket
  • socket_listen() — Listens for a connection on a socket
  • socket_last_error() — Returns the last error on the socket
  • socket_strerror() — Return a string describing a socket error

socket_create

(PHP 4 >= 4.1.0, PHP 5)

socket_create — Create a socket (endpoint for communication)

Описание

Creates and returns a socket resource, also referred to as an endpoint of communication. A typical network connection is made up of 2 sockets, one performing the role of the client, and another performing the role of the server.

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

The domain parameter specifies the protocol family to be used by the socket.

Available address/protocol families

Domain Description
AF_INET IPv4 Internet based protocols. TCP and UDP are common protocols of this protocol family.
AF_INET6 IPv6 Internet based protocols. TCP and UDP are common protocols of this protocol family.
AF_UNIX Local communication protocol family. High efficiency and low overhead make it a great form of IPC (Interprocess Communication).

type

The type parameter selects the type of communication to be used by the socket.

Available socket types

Type Description
SOCK_STREAM Provides sequenced, reliable, full-duplex, connection-based byte streams. An out-of-band data transmission mechanism may be supported. The TCP protocol is based on this socket type.
SOCK_DGRAM Supports datagrams (connectionless, unreliable messages of a fixed maximum length). The UDP protocol is based on this socket type.
SOCK_SEQPACKET Provides a sequenced, reliable, two-way connection-based data transmission path for datagrams of fixed maximum length; a consumer is required to read an entire packet with each read call.
SOCK_RAW Provides raw network protocol access. This special type of socket can be used to manually construct any type of protocol. A common use for this socket type is to perform ICMP requests (like ping).
SOCK_RDM Provides a reliable datagram layer that does not guarantee ordering. This is most likely not implemented on your operating system.

protocol

The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname() . If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP, and SOL_UDP can also be used.

Common protocols

Name Description
icmp The Internet Control Message Protocol is used primarily by gateways and hosts to report errors in datagram communication. The «ping» command (present in most modern operating systems) is an example application of ICMP.
udp The User Datagram Protocol is a connectionless, unreliable, protocol with fixed record lengths. Due to these aspects, UDP requires a minimum amount of protocol overhead.
tcp The Transmission Control Protocol is a reliable, connection based, stream oriented, full duplex protocol. TCP guarantees that all data packets will be received in the order in which they were sent. If any packet is somehow lost during communication, TCP will automatically retransmit the packet until the destination host acknowledges that packet. For reliability and performance reasons, the TCP implementation itself decides the appropriate octet boundaries of the underlying datagram communication layer. Therefore, TCP applications must allow for the possibility of partial record transmission.

Возвращаемые значения

socket_create() returns a socket resource on success, or FALSE on error. The actual error code can be retrieved by calling socket_last_error() . This error code may be passed to socket_strerror() to get a textual explanation of the error.

Список изменений

Версия Описание
5.0.0 The AF_INET6 constant was added.

Ошибки

If an inval >domain or type is given, socket_create() defaults to AF_INET and SOCK_STREAM respectively and additionally emits an E_WARNING message.

Смотрите также

  • socket_accept() — Accepts a connection on a socket
  • socket_bind() — Binds a name to a socket
  • socket_connect() — Initiates a connection on a socket
  • socket_listen() — Listens for a connection on a socket
  • socket_last_error() — Returns the last error on the socket
  • socket_strerror() — Return a string describing a socket error
НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

socket_create_pair

(PHP 4 >= 4.1.0, PHP 5)

socket_create_pair — Создаёт пару неразличимых сокетов и сохраняет их в массиве

Описание

socket_create_pair() создаёт два соединённых и неразличимых сокета, и сохраняет их в массиве fd . Эта функция обычно используется IPC (межпроцессном взаимодействии).

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

Параметр domain определяет семейство протоколов, которое будет использоваться сокетом. Смотрите их полный список в описании функции socket_create() .

Параметр type указывает тип коммуникации, которая будет использоваться сокетом. Смотрите их полный список в описании функции socket_create() .

Параметр protocol устанавливает определённый протокол в указанном семействе протоколов domain , который будет использоваться при связи с полученными сокетами. Соответствующее значение может быть получено по имени при помощи функции getprotobyname() . Если требуемый протокол TCP или UDP, то соответствующие константы SOL_TCP и SOL_UDP также могут быть использованы.

Смотрите полный список поддерживаемых протоколов в описании функции socket_create() .

Ссылка на массив, в который будут вставлены два ресурса сокетов.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.3.0 Эта функция теперь вновь доступна на Windows-платформах.
4.3.0 Эта функция из-за бага недоступна на Windows-платформах.

Примеры

Пример #1 Пример использования socket_create_pair()

/* На Windows нам нужно использовать AF_INET */
$domain = ( strtoupper ( substr ( PHP_OS , 0 , 3 )) == ‘WIN’ ? AF_INET : AF_UNIX );

/* Создаём пару сокетов */
if ( socket_create_pair ( $domain , SOCK_STREAM , 0 , $sockets ) === false ) <
echo «Не получилось выполнить socket_create_pair. Причина: » . socket_strerror ( socket_last_error ());
>
/* Отправляем и получаем данные */
if ( socket_write ( $sockets [ 0 ], «ABCdef123\n» , strlen ( «ABCdef123\n» )) === false ) <
echo «Не получилось выполнить socket_write(). Причина: » . socket_strerror ( socket_last_error ( $sockets [ 0 ]));
>
if (( $data = socket_read ( $sockets [ 1 ], strlen ( «ABCdef123\n» ), PHP_BINARY_READ )) === false ) <
echo «Не получилось выполнить socket_read(). Причина: » . socket_strerror ( socket_last_error ( $sockets [ 1 ]));
>
var_dump ( $data );

/* Закрываем сокеты */
socket_close ( $sockets [ 0 ]);
socket_close ( $sockets [ 1 ]);
?>

Пример #2 Пример использования socket_create_pair() в IPC

= array();
$strone = ‘Сообщение от родительского процесса.’ ;
$strtwo = ‘Сообщение от дочернего процесса.’ ;

if ( socket_create_pair ( AF_UNIX , SOCK_STREAM , 0 , $ary ) === false ) <
echo «Не получилось выполнить socket_create_pair(). Причина: » . socket_strerror ( socket_last_error ());
>
$pid = pcntl_fork ();
if ( $pid == — 1 ) <
echo ‘Не могу создать новый процесс.’ ;
> elseif ( $pid ) <
/*родительский процесс*/
socket_close ( $ary [ 0 ]);
if ( socket_write ( $ary [ 1 ], $strone , strlen ( $strone )) === false ) <
echo «Не получилось выполнить socket_write(). Причина: » . socket_strerror ( socket_last_error ( $ary [ 1 ]));
>
if ( socket_read ( $ary [ 1 ], strlen ( $strtwo ), PHP_BINARY_READ ) == $strtwo ) <
echo «Получено $strtwo \n» ;
>
socket_close ( $ary [ 1 ]);
> else <
/*дочерний процесс*/
socket_close ( $ary [ 1 ]);
if ( socket_write ( $ary [ 0 ], $strtwo , strlen ( $strtwo )) === false ) <
echo «Не получилось выполнить socket_write(). Причина: » . socket_strerror ( socket_last_error ( $ary [ 0 ]));
>
if ( socket_read ( $ary [ 0 ], strlen ( $strone ), PHP_BINARY_READ ) == $strone ) <
echo «Получено $strone \n» ;
>
socket_close ( $ary [ 0 ]);
>
?>

Смотрите также

  • socket_create() — Create a socket (endpoint for communication)
  • socket_create_listen() — Открывает сокет на указанном порту для принятия соединений
  • socket_bind() — Привязывает имя к сокету
  • socket_listen() — Listens for a connection on a socket
  • socket_last_error() — Возвращает последнюю ошибку на сокете
  • socket_strerror() — Возвращает строку, описывающую ошибку сокета

Что такое код socket_create_pair

socket_create_pair — создаёт пару одинаковых сокетов и сохраняет их в fd’ах.

Описание

bool socket_create_pair (int domain, int type, int protocol, array &fd)

Эта функция — ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

socket_create_pair

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array

Description

socket_create_pair() creates two connected and indistinguishable sockets, and stores them in fd . This function is commonly used in IPC (InterProcess Communication).

Parameters

The domain parameter specifies the protocol family to be used by the socket. See socket_create() for the full list.

The type parameter selects the type of communication to be used by the socket. See socket_create() for the full list.

The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname() . If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP , and SOL_UDP can also be used.

See socket_create() for the full list of supported protocols.

Reference to an array in which the two socket resources will be inserted.

Return Values

Returns TRUE on success or FALSE on failure.

Changelog

Предупреждение!
Version Description
5.3.0 This function is now re-enabled on Windows platforms.
4.3.0 This function was due to a bug made unavailable on Windows platforms.

Examples

Example #1 socket_create_pair() example

/* On Windows we need to use AF_INET */
$domain = ( strtoupper ( substr ( PHP_OS , 0 , 3 )) == ‘WIN’ ? AF_INET : AF_UNIX );

/* Setup socket pair */
if ( socket_create_pair ( $domain , SOCK_STREAM , 0 , $sockets ) === false ) <
echo «socket_create_pair failed. Reason: » . socket_strerror ( socket_last_error ());
>
/* Send and Recieve Data */
if ( socket_write ( $sockets [ 0 ], «ABCdef123\n» , strlen ( «ABCdef123\n» )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 0 ]));
>
if (( $data = socket_read ( $sockets [ 1 ], strlen ( «ABCdef123\n» ), PHP_BINARY_READ )) === false ) <
echo «socket_read() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 1 ]));
>
var_dump ( $data );

/* Close sockets */
socket_close ( $sockets [ 0 ]);
socket_close ( $sockets [ 1 ]);
?>

Example #2 socket_create_pair() IPC example

= array();
$strone = ‘Message From Parent.’ ;
$strtwo = ‘Message From Child.’ ;

if ( socket_create_pair ( AF_UNIX , SOCK_STREAM , 0 , $ary ) === false ) <
echo «socket_create_pair() failed. Reason: » . socket_strerror ( socket_last_error ());
>
$pid = pcntl_fork ();
if ( $pid == — 1 ) <
echo ‘Could not fork Process.’ ;
> elseif ( $pid ) <
/*parent*/
socket_close ( $ary [ 0 ]);
if ( socket_write ( $ary [ 1 ], $strone , strlen ( $strone )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $ary [ 1 ]));
>
if ( socket_read ( $ary [ 1 ], strlen ( $strtwo ), PHP_BINARY_READ ) == $strtwo ) <
echo «Recieved $strtwo \n» ;
>
socket_close ( $ary [ 1 ]);
> else <
/*child*/
socket_close ( $ary [ 1 ]);
if ( socket_write ( $ary [ 0 ], $strtwo , strlen ( $strtwo )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $ary [ 0 ]));
>
if ( socket_read ( $ary [ 0 ], strlen ( $strone ), PHP_BINARY_READ ) == $strone ) <
echo «Recieved $strone \n» ;
>
socket_close ( $ary [ 0 ]);
>
?>

See Also

  • socket_create() — Create a socket (endpoint for communication)
  • socket_create_listen() — Opens a socket on port to accept connections
  • socket_bind() — Binds a name to a socket
  • socket_listen() — Listens for a connection on a socket
  • socket_last_error() — Returns the last error on the socket
  • socket_strerror() — Return a string describing a socket error

Асинхронный веб, или Что такое веб-сокеты

Веб-сокеты (Web Sockets) — это передовая технология, которая позволяет создавать интерактивное соединение между клиентом (браузером) и сервером для обмена сообщениями в режиме реального времени. Веб-сокеты, в отличие от HTTP, позволяют работать с двунаправленным потоком данных, что делает эту технологию совершенно уникальной. Давайте разберемся, как работает эта технология и чем она отличается от HTTP.

Как работает HTTP?

Схема обмена сообщениями по HTTP

Вы наверняка знаете, что такое HTTP (или HTTPS), поскольку встречаетесь с этим протоколом каждый день в своём браузере. Браузер постоянно спрашивает у сервера, есть ли для него новые сообщения, и получает их.

Вы также можете знать, что HTTP позволяет использовать разные типы запросов, такие как POST, GET или PUT, каждый из которых имеет своё назначение.

Как работают веб-сокеты?

Схема обмена сообщениями при использовании веб-сокетов

Веб-сокетам же для ответа не нужны ваши повторяющиеся запросы. Достаточно выполнить один запрос и ждать отклика. Вы можете просто слушать сервер, который будет отправлять вам сообщения по мере готовности.

Веб-сокеты можно использовать, если вы разрабатываете:

  • приложения реального времени;
  • чат-приложения;
  • IoT-приложения;
  • многопользовательские игры.

Когда следует избегать использования веб-сокетов?

Практически никогда. Единственный минус — это несовместимость с некоторыми браузерами, но уже 95 % браузеров поддерживают веб-сокеты.

20 ноября в 18:30, Москва, беcплатно

В некоторых случаях веб-сокеты вам всё же не понадобятся. Если вы создаёте простую CMS, вам вряд ли пригодится функциональность в режиме реального времени. Также не стоит использовать веб-сокеты в REST API, поскольку вам хватит таких HTTP-запросов, как GET, POST, DELETE и PUT.

Практические примеры

В примерах ниже для клиента используется JavaScript, а для сервера — Node.js. Примеры очень просты и вряд ли пригодятся на практике, но зато позволят разобраться в сути.

Веб-сокеты

Вот иллюстрация работы веб-сокетов:

Демонстрация работы веб-сокетов

Эквивалент в HTTP

Так как HTTP должен постоянно проверять канал на наличие новых сообщений, можно использовать «грязную» проверку (dirty check) — подход, при котором клиент с заданной периодичностью (допустим, каждые 200 мс) проверяет наличие новых сообщений на сервере.

Чтобы не вникать в XMLHttpRequest, можно использовать библиотеку Axios. Она декларативна и очень понятна.

Заключение

Веб-сокеты являются одной из самых перспективных веб-технологий, которую уже сейчас используют многие разработчики. Она отлично подходит для взаимодействия в режиме реального времени, в том числе в онлайн-играх.

Практическое руководство. Создание сокета How to: Create a Socket

Перед использованием сокета для связи с удаленными устройствами необходимо инициализировать сокет, указав протокол и сведения о сетевом адресе. Before you can use a socket to communicate with remote devices, the socket must be initialized with protocol and network address information. Конструктор класса Socket имеет параметры, которые определяют семейство адресов, тип сокета и тип протокола, которые сокет использует для подключения. The constructor for the Socket class has parameters that specify the address family, socket type, and protocol type that the socket uses to make connections.

Пример Example

В следующем примере создается объект Socket, который может использоваться для обмена данными в сетях на основе TCP/IP (например, в Интернете). The following example creates a Socket that can be used to communicate on a TCP/IP-based network, such as the Internet.

Чтобы использовать UDP вместо TCP, измените тип протокола, как показано в следующем примере: To use UDP instead of TCP, change the protocol type, as in the following example:

В перечислении AddressFamily указаны стандартные семейства адресов, которые используются классом Socket для разрешения сетевых адресов (например, элемент AddressFamily.InterNetwork задает семейство адресов протокола IP версии 4). The AddressFamily enumeration specifies the standard address families used by the Socket class to resolve network addresses (for example, the AddressFamily.InterNetwork member specifies the IP version 4 address family).

В перечислении SocketType указан тип сокета (например, элемент SocketType.Stream указывает стандартный сокет для отправки и получения данных с помощью управления потоком). The SocketType enumeration specifies the type of socket (for example, the SocketType.Stream member indicates a standard socket for sending and receiving data with flow control).

В перечислении ProtocolType указан сетевой протокол, который используется для связи с объектом Socket (например, ProtocolType.Tcp означает, что сокет использует TCP; ProtocolType.Udp означает, что сокет использует UDP). The ProtocolType enumeration specifies the network protocol to use when communicating on the Socket (for example, ProtocolType.Tcp indicates that the socket uses TCP; ProtocolType.Udp indicates that the socket uses UDP).

После создания объекта Socket он может создать подключение к удаленной конечной точке или принимать подключения от удаленных устройств. After a Socket is created, it can either initiate a connection to a remote endpoint or receive connections from remote devices.

Что такое код socket_create_pair

(PHP 4 >= 4.1.0, PHP 5)

socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array

Description bool socket_create_pair ( int domain, int type, int protocol, array &fd )

socket_create_pair() creates two connected and indistinguishable sockets, and stores them in fd . This function is commonly used in IPC (InterProcess Communication).

The domain parameter specifies the protocol family to be used by the socket.

Table 1. Available address/protocol families

Domain Description
AF_INET IPv4 Internet based protocols. TCP and UDP are common protocols of this protocol family. Supported only in windows.
AF_INET6 IPv6 Internet based protocols. TCP and UDP are common protocols of this protocol family. Support added in PHP 5.0.0. Supported only in windows.
AF_UNIX Local communication protocol family. High efficiency and low overhead make it a great form of IPC (Interprocess Communication).

The type parameter selects the type of communication to be used by the socket.

Table 2. Available socket types

Type Description
SOCK_STREAM Provides sequenced, reliable, full-duplex, connection-based byte streams. An out-of-band data transmission mechanism may be supported. The TCP protocol is based on this socket type.
SOCK_DGRAM Supports datagrams (connectionless, unreliable messages of a fixed maximum length). The UDP protocol is based on this socket type.
SOCK_SEQPACKET Provides a sequenced, reliable, two-way connection-based data transmission path for datagrams of fixed maximum length; a consumer is required to read an entire packet with each read call.
SOCK_RAW Provides raw network protocol access. This special type of socket can be used to manually construct any type of protocol. A common use for this socket type is to perform ICMP requests (like ping, traceroute, etc).
SOCK_RDM Provides a reliable datagram layer that does not guarantee ordering. This is most likely not implemented on your operating system.

The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname() . If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP , and SOL_UDP can also be used.

Table 3. Common protocols

Name Description
icmp The Internet Control Message Protocol is used primarily by gateways and hosts to report errors in datagram communication. The «ping» command (present in most modern operating systems) is an example application of ICMP.
udp The User Datagram Protocol is a connectionless, unreliable, protocol with fixed record lengths. Due to these aspects, UDP requires a minimum amount of protocol overhead.
tcp The Transmission Control Protocol is a reliable, connection based, stream oriented, full duplex protocol. TCP guarantees that all data packets will be received in the order in which they were sent. If any packet is somehow lost during communication, TCP will automatically retransmit the packet until the destination host acknowledges that packet. For reliability and performance reasons, the TCP implementation itself decides the appropriate octet boundaries of the underlying datagram communication layer. Therefore, TCP applications must allow for the possibility of partial record transmission.

Example 1. socket_create_pair() example

= array();
/* Setup socket pair */
if ( socket_create_pair ( AF_UNIX , SOCK_STREAM , 0 , $sockets ) === false ) <
echo «socket_create_pair failed. Reason: » . socket_strerror ( socket_last_error ());
>
/* Send and Recieve Data */
if ( socket_write ( $sockets [ 0 ], «ABCdef123\n» , strlen ( «ABCdef123\n» )) === false ) <
echo «socket_write() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 0 ]));
>
if (( $data = socket_read ( $sockets [ 1 ], strlen ( «ABCdef123\n» ), PHP_BINARY_READ ) === false ) <
echo «socket_read() failed. Reason: » . socket_strerror ( socket_last_error ( $sockets [ 1 ]));
>
var_dump ( $data );

/* Close sockets */
socket_close ( $sockets [ 0 ]);
socket_close ( $sockets [ 1 ]);
?>

Example 2. socket_create_pair() IPC example

Что такое код socket_create_pair

socket_create — создаёт сокет (конечную точку соединения).

Описание

resource socket_create (int domain, int type, int protocol)

Эта функция — ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Создаёт конечную точку соединения (сокет) и возвращает ресурс сокета.

Параметр domain устанавливает домен (семейство протокола) для использования в соединении. В настоящее время понимаются AF_INET и AF_UNIX . AF_INET обычно используется для соединений на основе internet. AF_UNIX использует pathnames для идентификации сокетов и, следовательно, применим только для локальных соединений (что, с другой стороны, быстрее).

Параметр type выбирает тип сокета. Это один из: SOCK_STREAM , SOCK_DGRAM , SOCK_SEQPACKET , SOCK_RAW , SOCK_RDM , SOCK_PACKET . Два самых распространённых — SOCK_DGRAM для UDP (connectionless) взаимодействия и SOCK_STREAM для TCP -взаимодействия.

protocol устанавливает протокол: SOL_UDP или SOL_TCP .

Дополнительно об использовании socket_create() , а также о значениях различных параметров, см. Unix man-страницу socket (2).

Примечание: если задан неверный domain или type , socket_create() по умолчанию имеет AF_INET и SOCK_STREAM соответственно и дополнительно выдаёт сообщение E_WARNING .

Практическое руководство. Создание сокета How to: Create a Socket

Перед использованием сокета для связи с удаленными устройствами необходимо инициализировать сокет, указав протокол и сведения о сетевом адресе. Before you can use a socket to communicate with remote devices, the socket must be initialized with protocol and network address information. Конструктор класса Socket имеет параметры, которые определяют семейство адресов, тип сокета и тип протокола, которые сокет использует для подключения. The constructor for the Socket class has parameters that specify the address family, socket type, and protocol type that the socket uses to make connections.

Пример Example

В следующем примере создается объект Socket, который может использоваться для обмена данными в сетях на основе TCP/IP (например, в Интернете). The following example creates a Socket that can be used to communicate on a TCP/IP-based network, such as the Internet.

Чтобы использовать UDP вместо TCP, измените тип протокола, как показано в следующем примере: To use UDP instead of TCP, change the protocol type, as in the following example:

В перечислении AddressFamily указаны стандартные семейства адресов, которые используются классом Socket для разрешения сетевых адресов (например, элемент AddressFamily.InterNetwork задает семейство адресов протокола IP версии 4). The AddressFamily enumeration specifies the standard address families used by the Socket class to resolve network addresses (for example, the AddressFamily.InterNetwork member specifies the IP version 4 address family).

В перечислении SocketType указан тип сокета (например, элемент SocketType.Stream указывает стандартный сокет для отправки и получения данных с помощью управления потоком). The SocketType enumeration specifies the type of socket (for example, the SocketType.Stream member indicates a standard socket for sending and receiving data with flow control).

В перечислении ProtocolType указан сетевой протокол, который используется для связи с объектом Socket (например, ProtocolType.Tcp означает, что сокет использует TCP; ProtocolType.Udp означает, что сокет использует UDP). The ProtocolType enumeration specifies the network protocol to use when communicating on the Socket (for example, ProtocolType.Tcp indicates that the socket uses TCP; ProtocolType.Udp indicates that the socket uses UDP).

После создания объекта Socket он может создать подключение к удаленной конечной точке или принимать подключения от удаленных устройств. After a Socket is created, it can either initiate a connection to a remote endpoint or receive connections from remote devices.

Илон Маск рекомендует:  Что такое код ifx_textasvarchar
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Предупреждение!