(PHP 4 >= 4.3.0, PHP 5, PHP 7)
socket_get_option — Получает опции потока для сокета
Функция socket_get_option() извлекает значение для
опции, указанной параметром optname
для заданного
socket
.
socket
Действительный ресурс сокета, созданный с помощью socket_create() или socket_accept().
level
Параметр level
указывает уровень протокола, на
котором находится опция. Например, для получения опций на уровне
сокета, должен использовать параметр level
, равный
SOL_SOCKET
. Другие уровни, такие как
TCP
, можно использовав, указав номер протокола
этого уровня. Номера протоколов можно найти
с помощью функции getprotobyname().
optname
Опция | Описание | Тип |
---|---|---|
SO_DEBUG |
Сообщает, записывается ли отладочная информация. | int |
SO_BROADCAST |
Сообщает, поддерживается ли передача широковещательных сообщений. | int |
SO_REUSEADDR |
Сообщает, могут ли локальные адреса использоваться повторно. | int |
SO_REUSEPORT |
Сообщает, могут ли локальные порты использоваться повторно. | int |
SO_KEEPALIVE |
Сообщает, поддерживаются ли соединенияс периодической передачей сообщений. Если подключенный сокет не отвечает на эти сообщения, подключение прерывается и процессы записи в этот сокет уведомляются сигналом SIGPIPE. | int |
SO_LINGER |
Сообщает, будет ли Если l_onoff отличен от нуля, а l_linger равно нулю, все неотправленные данные будут отброшены и RST (сброс) отправлен одноранговому узлу в случае сокета, ориентированного на подключение. С другой стороны, если l_onoff и l_linger отличны от нуля, socket_close() будет блокироваться до тех пор, пока все данные не будут отправлены или если время, указанное в l_linger, не истечет. Если сокет не блокируется, socket_close() потерпит неудачу и вернет ошибку. |
array.Массив будет содержать два ключа: l_onoff и l_linger. |
SO_OOBINLINE |
Сообщает, выходит ли socket из встроенных данных.
|
int |
SO_SNDBUF |
Сообщает размер отправленного буфера. | int |
SO_RCVBUF |
Сообщает о размере полученного буфера. | int |
SO_ERROR |
Сообщает информацию о статусе ошибке и очищает ее. | int (не может быть установлен socket_set_option()) |
SO_TYPE |
Сообщает о типе socket (например,
SOCK_STREAM ).
|
int (не может быть установлен socket_set_option()) |
SO_DONTROUTE |
Сообщает, что исходящие сообщения обходят стандартные средства маршрутизации. | int |
SO_RCVLOWAT |
Сообщает минимальное количество байтов для обработки операций ввода socket .
|
int |
SO_RCVTIMEO |
Сообщает значение тайм-аута для операций ввода. | array. Массив будет содержать два ключа: sec которая, являются частью секунд для значения тайм-аута и usec, которая является микросекундной частью значения тайм-аута. |
SO_SNDTIMEO |
Сообщает значение тайм-аута, указывающее количество времени, которое блокирует функция вывода, поскольку управление потоком предотвращает отправку данных. | array. Массив будет содержать два ключа: sec которая, являются частью секунд для значения тайм-аута и usec, которая является микросекундной частью значения тайм-аута. |
SO_SNDLOWAT |
Сообщает минимальное количество байтов для обработки операцией вывода socket .
|
int |
TCP_NODELAY |
Сообщает, отключен ли алгоритм Nagle TCP. | int |
MCAST_JOIN_GROUP |
Присоединяется к многоадресной группе. (добавлено в PHP 5.4) | массив (array) с ключами "group", указав строку (string) с многоадресным адресом IPv4 или IPv6 и "interface", указав либо номер интерфейса (тип int), либо строку (string) с именем интерфейса, например "eth0". 0 можно указать, чтобы сообщить, что интерфейс должен быть выбран с использованием правил маршрутизации. (может использоваться только в socket_set_option()) |
MCAST_LEAVE_GROUP |
Оставляет многоадресную группу. (добавлено в PHP 5.4) |
массив (array). См. MCAST_JOIN_GROUP для получения
дополнительной информации. (может использоваться только в
socket_set_option())
|
MCAST_BLOCK_SOURCE |
Блокирует пакеты, поступающие из определенного источника в определенную группу многоадресной передачи, которые должны быть предварительно соединены. (добавлено в PHP 5.4) |
array с такими же ключами, как у
MCAST_JOIN_GROUP , плюс один дополнительный ключ,
source, которыет представляет строку (string),
указывающую адрес IPv4 или IPv6 источника, который должен быть заблокирован.
(может использоваться только в socket_set_option())
|
MCAST_UNBLOCK_SOURCE |
Разблокирует (начинает прием снова) пакеты, поступающие с определенного исходного адреса в определенную группу многоадресной передачи, которая должна предварительно соединена. (добавлено в PHP 5.4) |
массив (array) с таким же форматом, как у
MCAST_BLOCK_SOURCE .
(может использоваться только в socket_set_option())
|
MCAST_JOIN_SOURCE_GROUP |
Получать пакеты, предназначенные для конкретной группы многоадресной передачи, исходный адрес которого совпадает определенному значению. (добавлено в PHP 5.4) |
массив (array) с тем же самым форматом, что у
MCAST_BLOCK_SOURCE .
(может использоваться только в socket_set_option())
|
MCAST_LEAVE_SOURCE_GROUP |
Остановить прием пакетов, предназначенных для конкретной группы многоадресной передачи, исходный адрес которого совпадает определенному значению. (добавлено в PHP 5.4) |
array with the same format as
MCAST_BLOCK_SOURCE .
(can only be used in socket_set_option())
|
IP_MULTICAST_IF |
Исходящий интерфейс для многоадресных пакетов IPv4. (добавлено в PHP 5.4) |
Любое целое число (int), указывающее номер интерфейса
строку (string) с именем интерфейса, например
eth0. Значение 0 может использоваться
для указания, что таблица маршрутизаци используется для выбора интерфейса.
Функция socket_get_option() возвращает индекс
интерфейса.
Обратите внимание, что в отличие от C API, эта опция НЕ принимает IP-адрес.
Это устраняет разницу в интерфейсе между
IP_MULTICAST_IF и IPV6_MULTICAST_IF .
|
IPV6_MULTICAST_IF |
Исходящий интерфейс для многоадресных пакетов IPv6. (добавлено в PHP 5.4) |
То же, что и IP_MULTICAST_IF .
|
IP_MULTICAST_LOOP |
Политика петли групповой передачи для пакетов IPv4, которая определяет, могут ли пакеты многоадресной передачи, отправленные этим сокетом, также достигать приемники на том же хосте, которые присоединились к той же группе многоадресной передачи на исходящем интерфейсе, который используется этим сокетом. Это в данном случае по умолчанию. (добавлено в PHP 5.4) | целое число (int) (либо 0 или 1). Для socket_set_option() любое значение будет принято и преобразовано в тип boolean, согласно обычным правилам PHP. |
IPV6_MULTICAST_LOOP |
Аналогично IP_MULTICAST_LOOP , но для IPv6.
(добавлено в PHP 5.4)
|
int. See IP_MULTICAST_LOOP .
|
IP_MULTICAST_TTL |
Время ожидания исходящих пакетов IPv4 для многоадресной передачи. Это должно быть значение между 0 (не оставлять интерфейс) и 255. Значение по умолчанию - 1 (достигается только локальная сеть). (добавлено в PHP 5.4) | целое число (int) между 0 и 255. |
IPV6_MULTICAST_HOPS |
Аналогично IP_MULTICAST_TTL , но для пакетов IPv6.
Значение -1 также принимается, что означает использование маршрута по умолчанию.
(добавлено в PHP 5.4)
|
целое число (int) между 0 и 255. |
Возвращает значение заданной опции или FALSE
при ошибках.
Пример #1 Пример использования socket_get_option()
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>