socket_get_option
(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
Сообщает, будет ли
socket
останавливаться на socket_close(), если данные присутствуют. По умолчанию, когда сокет закрыт, он попытается отправить все неотправленные данные. В случае сокета, ориентированного на подключение, socket_close() будет ожидать, пока его одноранговый узел подтвердит данные.Если 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) с тем же самым форматом, что у MCAST_BLOCK_SOURCE
. (может использоваться только в 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));
?>
Смотрите также
- socket_create_listen() - Открывает сокет на указанном порту для принятия соединений
- socket_set_option() - Устанавливает опции для сокета