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_option(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

= NULL

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

На socket_get_option() Ги добива опциите на сокетот за сокетот option функцијата ја враќа вредноста за опцијата специфицирана од socket.

Параметри

socket

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

level

На level параметарот за специфицираниот level параметарот SOL_SOCKET параметарот специфицира нивото на протоколот на кое се наоѓа опцијата. На пример, за да се добијат опции на ниво на сокет, би се користел TCP, може да се користат со специфицирање на бројот на протоколот на тоа ниво. Броевите на протоколи може да се најдат со користење на getprotobyname() function.

option
Достапни опции на сокетот
Опција = NULL Тип
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. Низата ќе содржи два клучa: l_onoff and 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. Низата ќе содржи два клуч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 име на филтерот (максимум 15 знаци).
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.