PHP.mk документација

socket_get_option

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.socket-get-option.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.socket-get-option.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
socket_get_option

Референца за `function.socket-get-option.php` со подобрена типографија и навигација.

function.socket-get-option.php

socket_get_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

socket_get_optionGets socket options for the socket

= NULL

socket_get_option(Сокет $socket, int $level, int $option): array|int|false

На socket_get_option() function retrieves the value for the option specified by the option parameter for the specified socket.

Параметри

socket

А Сокет инстанца креирана со socket_create() or socket_accept().

level

На level parameter specifies the protocol level at which the option resides. For example, to retrieve options at the socket level, a level параметарот SOL_SOCKET would be used. Other levels, such as TCP, can be used by specifying the protocol number of that level. Protocol numbers can be found by using the getprotobyname() function.

option
Available Socket Options
Опција = NULL Тип
SO_DEBUG Reports whether debugging information is being recorded. int
SO_BROADCAST Reports whether transmission of broadcast messages is supported. int
SO_REUSEADDR Reports whether local addresses can be reused. int
SO_REUSEPORT Reports whether local ports can be reused. int
SO_KEEPALIVE Reports whether connections are kept active with periodic transmission of messages. If the connected socket fails to respond to these messages, the connection is broken and processes writing to that socket are notified with a SIGPIPE signal. int
SO_LINGER

Reports whether the socket lingers on socket_close() if data is present. By default, when the socket is closed, it attempts to send all unsent data. In the case of a connection-oriented socket, socket_close() will wait for its peer to acknowledge the data.

Враќа l_onoff is non-zero and l_linger is zero, all the unsent data will be discarded and RST (reset) is sent to the peer in the case of a connection-oriented socket.

On the other hand, if l_onoff is non-zero and l_linger е различен од нула, socket_close() ќе блокира додека не се испратат сите податоци или додека не истече наведеното време во l_linger истече. Ако сокетот не е блокирачки, socket_close() ќе откаже и ќе врати грешка.

array. Низата ќе содржи два клучa: l_onoff and l_linger.
SO_OOBINLINE Reports whether the 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. Низата ќе содржи два клучa: sec што е делот од секунди во вредноста на тајмаутот и usec што е делот од микросекунди од вредноста на тајмаутот.
SO_SNDTIMEO Пријавува ја вредноста на тајмаутот што го специфицира времето што една излезна функција блокира бидејќи контролата на протокот спречува испраќање податоци. array. Низата ќе содржи два клучa: sec што е делот од секунди во вредноста на тајмаутот и usec што е делот од микросекунди од вредноста на тајмаутот.
SO_SNDLOWAT Пријавува го минималниот број на бајти за обработка за socket излезни операции. int
TCP_NODELAY Пријавува дали Nagle TCP алгоритмот е оневозможен. int
MCAST_JOIN_GROUP Се придружува на мултикаст група. array со клучеви "group", наведувајќи string со IPv4 или IPv6 мултикаст адреса и "interface", наведувајќи број на интерфејс (тип int) или string со името на интерфејсот, како "eth0". 0 може да се наведе за да се означи дека интерфејсот треба да се избере според правилата за насочување. (може да се користи само во socket_set_option())
MCAST_LEAVE_GROUP Ја напушта мултикаст групата. array. Види MCAST_JOIN_GROUP за повеќе информации. (може да се користи само во socket_set_option())
MCAST_BLOCK_SOURCE Блокира пакети што пристигнуваат од специфичен извор до специфична мултикаст група, која претходно морала да биде придружена. array со исти клучеви како MCAST_JOIN_GROUP, плус еден дополнителен клуч, source, што се пресликува на string навестувајќи IPv4 или IPv6 адреса на изворот што треба да се блокира. (може да се користи само во socket_set_option())
MCAST_UNBLOCK_SOURCE Ги деблокира (повторно почнува да прима) пакети што пристигнуваат од специфична адреса на изворот до специфична мултикаст група, која претходно морала да биде придружена. array со ист формат како MCAST_BLOCK_SOURCE. (може да се користи само во socket_set_option())
MCAST_JOIN_SOURCE_GROUP Прима пакети наменети за специфична мултикаст група чија адреса на изворот одговара на специфична вредност. array со ист формат како MCAST_BLOCK_SOURCE. (може да се користи само во socket_set_option())
MCAST_LEAVE_SOURCE_GROUP Престанува да прима пакети наменети за специфична мултикаст група чија адреса на изворот одговара на специфична вредност. array со ист формат како MCAST_BLOCK_SOURCE. (може да се користи само во socket_set_option())
IP_MULTICAST_IF Излезниот интерфејс за IPv4 мултикаст пакети. Големина на парче. int Или string специфицирање на бројот на интерфејсот или eth0со име на интерфејс, како 0 . Вредноста socket_get_option() може да се користи за да се означи дека табелата за насочување треба да се користи во изборот на интерфејсот. Функцијата IP_MULTICAST_IF and IPV6_MULTICAST_IF.
IPV6_MULTICAST_IF враќа индекс на интерфејс. Имајте предвид дека, за разлика од C API, оваа опција НЕ зема IP адреса. Ова го елиминира интерфејсот разлика помеѓу Излезниот интерфејс за IPv6 мултикаст пакети. IP_MULTICAST_IF.
IP_MULTICAST_LOOP Исто како int Политиката за мултикаст затворање за IPv4 пакети овозможува или оневозможува затворање на излезните мултикасти, кои претходно морале да бидат приклучени. Сепак, ефектот се разликува, дали се применува на unixes или Windows, при што првиот е на патеката за примање, додека вториот е на патеката за испраќање. 0 or 1(или socket_set_option() ). За
IPV6_MULTICAST_LOOP секоја вредност ќе биде прифатена и ќе биде претворена во булова според вообичаените PHP правила. IP_MULTICAST_LOOPАналогно на int. Види IP_MULTICAST_LOOP.
IP_MULTICAST_TTL , но за IPv6. int Времето на живот на излезните IPv4 мултикаст пакети. Ова треба да биде вредност помеѓу 0 (не ја напуштајте интерфејсот) и 255. Стандардната вредност е 1 (се достигнува само локалната мрежа).
IPV6_MULTICAST_HOPS секоја вредност ќе биде прифатена и ќе биде претворена во булова според вообичаените PHP правила. IP_MULTICAST_TTLпомеѓу 0 и 255. int , но за IPv6 пакети. Вредноста -1 исто така е прифатена, што значи дека треба да се користи стандардната рута.
SO_MARK помеѓу -1 и 255. int
SO_ACCEPTFILTER Поставува идентификатор на сокетот за целите на филтрирање пакети на Linux. string name of the filter (length 15 max).
SO_USER_COOKIE име на филтерот (максимум 15 знаци). int
SO_RTABLE Поставува идентификатор на сокетот за цел на филтрирање пакети на FreeBSD. int
SO_DONTTRUNC Поставува идентификатор на сокетот за цел на филтрирање пакети на OpenBSD. int
SO_WANTMORE Задржи непрочитани податоци. int
TCP_DEFER_ACCEPT Дај навестување кога има повеќе податоци подготвени. int
SO_INCOMING_CPU Не известувај сокет за слушање додека не се подготват податоци. int
SO_MEMINFO Ги добива/поставува афинитетот на процесорот на сокетот. int
SO_BPF_EXTENSIONS Ги добива сите meminfo на сокетот. int
SO_SETFIB Ги добива поддржаните BPF екстензии од јадрото за прикачување на сокет. int
SOL_FILTER Поставува табела за рутирање (FIB) на сокетот. (Само FreeBSD) int
TCP_KEEPCNT Филтри припишани на сокет. (Само Solaris/Illumos) int
TCP_KEEPIDLE Поставува максимален број на keepalive проби што TCP треба да ги испрати пред да ја прекине врската. int
TCP_KEEPINTVL Поставува време колку врската треба да остане неактивна. int
TCP_KEEPALIVE Поставува време помеѓу индивидуалните keepalive проби. int
TCP_NOTSENT_LOWAT Поставува време колку врската треба да остане неактивна. (Само macOS) int

Вратени вредности

Поставува ограничување на бројот на неиспратени податоци во редот за запишување од сокет стримот. (Само Linux) false при неуспех.

Дневник на промени

Верзија = NULL
8.0.0 socket е Сокет Врати ресурс или resource.

Примери

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

<?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));
?>

Види Исто така

Белешки од корисници 4 белешки

рециклинг.сп.ам@џимејл.ком
пред 15 години
Just 2 notes here:
- On UNIX, If SO_DEBUG is set, the php program needs an effective user id of 0.
-  activating SO_OOBINLINE on a socket is equivalent to passing MSG_OOB flag to each recieving functions used with that socket (eg: socket_recv, socket_recvfrom).
- Отвора сокет на порта за прифаќање врски
пред 15 години
If using Unix Sockets, and you want to use SO_PEERCRED, you can use the number 17 for the optname (and SOL_SOCKET for the level).  The PID of the connecting process will be returned.
Чад Лавоа
12 години пред
I was playing around with this option to use multiply socket connections with same hostname and same port (IRC). However the socket function needed for this is SO_REUSEPORT.

Though the majority of linux distro's does not have that yet officially implented in there distro's.

However for debian there is an patch that can be installed to get it working:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d

it has some work but I got it working after a while (Noobie in debian) maybe some other people are facing the same problem as I was.
skydiablo на gmx точка нет
пред 4 години
to receive UDP DHCP packets on a dedicated interface, you have to use the undocumented option SO_BINDTODEVICE:

<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

socket_set_option($socket, SOL_SOCKET, SO_BINDTODEVICE, 'eth1');
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_set_option($socket, SOL_SOCKET, SO_REUSEPORT, 1);

socket_bind($socket, '255.255.255.255', 67);
while (1) {
    if ($src = @socket_recv($socket, $data, 9999, 0)) {
        echo $data . PHP_EOL;
    }
}
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.