stream_socket_clientОткрывает соединение с интернет-сокетом или с доменным Unix-сокетом
&reftitle.description;
resourcefalsestream_socket_clientstringaddressinterror_code&null;stringerror_message&null;floatnulltimeout&null;intflagsSTREAM_CLIENT_CONNECTresourcenullcontext&null;
Функция начинает соединение потока или датаграммы с удалённым сокетом, который указали
в параметре address. Тип создаваемого сокета
определяется по транспорту, который указали через стандартное форматирование URL-адреса:
transport://target. Для сокетов интернет-домена
(AF_INET) наподобие TCP и UDP часть target
параметра address должна состоять из
имени хоста или IP-адреса, за которым следует двоеточие и номер порта. Для доменных
сокетов Unix часть target должна указывать на
файл сокета в файловой системе.
По умолчанию поток будет открыт в блокирующем режиме. Можно
переключить поток в неблокирующий режим функцией
stream_set_blocking.
&reftitle.parameters;
address
Адрес удалённого сокета для соединения.
error_code
При сбое соединения функция присвоит параметру номер системной ошибки.
error_message
При сбое соединения функция присвоит параметру сообщение о системной ошибке.
timeout
Число секунд, в течение которых должно произойти время ожидания системного
вызова connect(). По умолчанию используется значение директивы
default_socket_timeout.
Этот параметр применяется, только если попытки асинхронного подключения не предпринимаются.
Чтобы указать время ожидания для чтения или записи данных через сокет, вызывают функцию
stream_set_timeout, поскольку параметр
timeout применяется только при создании соединения через
сокет.
flags
Поле битовой маски, которое может принимать значение любой комбинации флагов соединения.
Пока набор флагов соединения ограничен следующими значениями:
STREAM_CLIENT_CONNECT (по умолчанию),
STREAM_CLIENT_ASYNC_CONNECT
и STREAM_CLIENT_PERSISTENT.
context
Допустимый ресурс контекста, который создали функцией stream_context_create.
&reftitle.returnvalues;
В случае успешного выполнения функция возвращает ресурс потока, который можно
использовать с другими файловыми функциями (например,
fgets, fgetss,
fwrite, fclose
и feof); если возникла ошибка, функция возвращает &false;.
&reftitle.errors;
В случае неудачного вызова функция заполнит параметры error_code
и error_message системной ошибкой,
которая произошла при системном вызове
connect(). Если значение, которое вернулось в параметре
error_code, равно 0 и функция
вернула значение &false;, это означает, что ошибка
произошла до вызова connect(). Это произошло,
вероятно, из-за проблемы инициализации сокета. Примите во внимание,
что параметры error_code
и error_message каждый раз будут передаваться по ссылке.
&reftitle.changelog;
&Version;&Description;8.0.0
Параметры timeout и context теперь принимают значение null.
&reftitle.examples;
Пример использования функции stream_socket_client
\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
?>
]]>
Пример UDP-соединения
Получения дня и времени от UDP-службы daytime (порт 13)
на localhost.
\n";
} else {
fwrite($fp, "\n");
echo fread($fp, 26);
fclose($fp);
}
?>
]]>
&reftitle.notes;
UDP-сокеты иногда открываются без ошибки,
даже если удалённый хост недоступен. Ошибка станет заметной,
только когда данные будут читать из сокета или писать данные в сокет.
Причина этого в том, что UDP — протокол без соединения,
что означает, что операционная система не пытается установить
соединение с сокетом, пока ей в действительности
не нужно отправить или получить данные.
&ipv6.brackets;
В зависимости от окружения Unix-домены или произвольное
время ожидания соединения могут быть недоступны. Список доступных
транспортов можно получить функцией stream_get_transports.
Смотрите список встроенных транспортов на странице .
&reftitle.seealso;
stream_socket_serverstream_set_blockingstream_set_timeoutstream_selectfgetsfgetssfwritefclosefeof