stream_socket_accept
stream_socket_enable_crypto
Stream Functions
PHP Manual

# stream_socket_client

(PHP 5)

stream_socket_client — Abrir una conexión de socket de dominio de Internet o Unix

### Descripción

resource stream_socket_client ( string `$socket_remoto` [, int `&$errno` [, string `&$errstr` [, float `$tiempo_espera` [, int `$banderas` [, resource `$contexto` ]]]]] )

Inicia una conexión secuenciada o tipo datagrama al destino especificado por `socket_remoto` . El tipo de socket creado es determinado por el transporte especificado usando el formato de URL estándar: transporte://destino. Para sockets de dominio de Internet (AF_INET) tales como TCP y UDP, la porción destino del parámetro `socket_remoto` debe consistir de un nombre de host o dirección IP seguido de un signo de dos puntos y un número de puerto. Para sockets de dominio Unix, la porción `destino` debe apuntar al archivo de socket en el sistema de archivos. El `tiempo_espera` opcional puede ser usado para establecer un tiempo de espera máximo en segundos para el llamado de conexión del sistema. `banderas` es un campo de máscara de bits que puede ser definido como una combinación de banderas de conexión. Actualmente, las banderas de conexión disponibles están limitadas a `STREAM_CLIENT_CONNECT` (predeterminada), `STREAM_CLIENT_ASYNC_CONNECT` y `STREAM_CLIENT_PERSISTENT`.

> Note: Si necesita establecer un tiempo de espera para la lectura/escritura de datos sobre el socket, use stream_set_timeout(), ya que el parámetro `tiempo_espera` de stream_socket_client() sólo se aplica cuando se establece la conexión con el socket.

> Note: El parámetro de tiempo de espera solo se aplica si no está intentando realizar una conexión asincrónica.

stream_socket_client() devuelve un recurso de secuencia que puede ser usado junto con las otras funciones de archivos (tales como fgets(), fgetss(), fwrite(), fclose(), y feof()).

Si la llamada falla, devolverá `FALSE` y si los argumentos opcionales `errno` y `errstr` están presentes, éstos serán definidos de modo tal que indiquen el error de nivel de sistema actual que ocurrió en el llamado de nivel de sistema connect(). Si el valor devuelto en `errno` es 0 y la función devolvió `FALSE`, es un indicio de que el error ocurrió antes del llamado a connect(). Esto es por lo general debido a un problema con la inicialización del socket. Note que los argumentos `errno` y `errstr` serán siempre pasados por referencia.

Dependiendo del entorno, el dominio Unix o el tiempo de espera de conexión opcional pueden no estar disponibles. Una lista de transportes disponibles puede ser recuperada usando stream_get_transports(). Vea Lista de Transportes de Sockets Soportados para consultar una lista de transportes incorporados.

La secuencia será abierta de forma predeterminada en modo de bloqueo. Puede modificarla a modo de no-bloqueo usando stream_set_blocking().

Example #1 Ejemplo de stream_socket_client()

`<?php
$da = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$da) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($da, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
while (!feof($da)) {
echo fgets($da, 1024);
}
fclose($da);
}
?>`

El siguiente ejemplo muestra cómo recuperar la fecha y hora desde el servicio UDP "daytime" (puerto 13) en su máquina local.

Example #2 Uso de una conexión UDP

`<?php
$da = stream_socket_client("udp://127.0.0.1:13", $errno, $errstr);
if (!$da) {
echo "ERROR: $errno - $errstr<br />\n";
} else {
fwrite($da, "\n");
echo fread($da, 26);
fclose($da);
}
?>`

Warning

Los sockets UDP parecerán haber sido abiertos sin error en ocasiones, incluso si el host remoto no ha podido ser contactado. El error solo se hará aparente cuando lea o escriba datos desde/hacia el socket. La razón de esto es que UDP es un protocolo "sin conexión", lo que quiere decir que el sistema operativo no intenta establecer un enlace para el socket hasta que realmente necesita enviar o recibir datos.

> Note: Cuando se especifique una dirección numérica IPv6 (p.ej. fe80::1) se debe incluir la IP entre corchetes. Por ejemplo tcp://[fe80::1]:80.

Vea también stream_socket_server(), stream_set_blocking(), stream_set_timeout(), stream_select(), fgets(), fgetss(), fwrite(), fclose(), feof(), y la extensión Curl.

stream_socket_accept
stream_socket_enable_crypto
Stream Functions
PHP Manual