Thanks to visit codestin.com
Credit goes to www.php.net

update page now

Контекстные опции сокета

Контекстные опции сокетаСписок контекстных опций сокета

Описание

Контекстные опции доступны для всех обёрток, которые работают через сокеты, например: tcp, http и ftp.

Опции

bindto

Указывает IP-адрес (IPv4 или IPv6) и (или) номер порта, которые PHP будет использовать для подключения к сети. Синтаксис выглядит следующим образом: ip:port для адреса IPv4, и [ip]:port для адреса IPv6. Установка для IP-адреса и (или) порта значения 0 разрешит системе самой выбрать нужный IP и (или) порт.

Замечание:

Поскольку во время обычной работы FTP-сервер создаёт 2 соединения с сокетами, этой опцией нельзя задать номер порта.

backlog

Ограничивает исходящие соединения в очереди соединений сокета.

Замечание:

Опция работает только с функцией stream_socket_server().

ipv6_v6only

Переопределяет значение ОС по умолчанию для сопоставления IPv4-адресов с IPv6-адресами.

Замечание:

Это важно, в частности, при попытке прослушивать IPv4-адреса отдельно, пока существует привязка к адресу [::].

Применимо только к функции stream_socket_server().

so_reuseport

Разрешает множественную привязку к одной и той же паре IP:порт, даже из разных процессов.

Замечание:

Применимо только к функции stream_socket_server().

so_broadcast

Разрешает посылать и принимать данные в/от широковещательных адресов.

Замечание:

Применимо только к функции stream_socket_server().

tcp_nodelay

Установка для этой опции значения true установит SOL_TCP,NO_DELAY=1 и тем самым отключит алгоритм TCP Nagle.

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

Версия Описание
7.1.0 Добавлено tcp_nodelay.
7.0.1 Добавлено ipv6_v6only.

Примеры

Пример #1 Пример использования опции bindto

<?php

// Соединение с сетью через IP-адрес 192.168.0.100
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);


// Соединение с сетью через IP-адрес 192.168.0.100 и порт 7000
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);


// Соединение с сетью через IPv6-адрес 2001:db8::1
// и порт 7000
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);


// Соединение с сетью через порт 7000
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);


// Создаём контекст...
$context = stream_context_create($opts);

// ...и получаем через него данные
echo file_get_contents('http://www.example.com', false, $context);

?>

Добавить

Примечания пользователей 2 notes

up
11
mix at ater dot me
6 years ago
The right way for forcing IPv6 is 'bindto' => '[::]:0'
up
3
guru at jnt-finland dot fi
10 years ago
You can set "bindto" to "0:0" to force use IPv4 instead of IPv6. And probably "[0]:0" to force use IPv6, thou this I couldn't test.
To Top