stream_socket_client
Abrir una conexión de socket de dominio de Internet o Unix
&reftitle.description;
resourcestream_socket_client
stringremote_socket
interrno
stringerrstr
floattimeoutini_get("default_socket_timeout")
intflagsSTREAM_CLIENT_CONNECT
resourcecontext
Inicia una conexión de flujo o datagrama al destino especificado
por remote_socket. El tipo de socket creado
se determina por el transporte especificado usando el formato de URL estándar:
transporte://objetivo. Para sockets de Dominio de Internet
(AF_INET) como TCP y UDP, la porción del objetivo
del parámetro remote_socket debería consistir en
un nombre de host o dirección IP seguida de dos puntos y un número de puerto. Para sockets
de dominio de Unix, la porción de target apuntará
al archivo de socket del sistema de archivos.
El flujo será abierto por defecto en modo de bloqueo. Se puede
cambiar al modo de no bloqueo usando
stream_set_blocking.
&reftitle.parameters;
remote_socket
Dirección del socket al que se va a conectar.
errno
Será establecido al número de error a nivel de sistema si la conexión falla.
errstr
Será establecido al mensaje de error a nivel de sistema si la conexión falla.
timeout
Número de segundos hasta que la llamda al sistema de connect()
debería esperar.
Este parámetro sólo se aplica cuando no se hace un intento de
conexión asíncrona.
Para establecer un tiempo de espera para lectura/escritura de información sobre el socket,
use la función stream_set_timeout, ya que
timeout sólo se aplica mientras se hace una conexión
al socket.
flags
Campo de máscara de bits que puede ser establecido a cualquier combinación de banderas de conexión.
Actualmente la selección de banderas de conexión está limitada a
STREAM_CLIENT_CONNECT (por defecto),
STREAM_CLIENT_ASYNC_CONNECT y
STREAM_CLIENT_PERSISTENT.
context
Un recurso de contexto válido creado con stream_context_create.
&reftitle.returnvalues;
Si se tuvo éxito, un recurso de flujo es devuelto, el cuál se puede
usar junto con las demás funciones de archivo (tales como
fgets, fgetss,
fwrite, fclose, y
feof), &false; si falló.
&reftitle.errors;
Si falló, los argumentos errno y
errstr serán rellenados con el error
a nivel de sistema actual que ocurrió en la llamda a nivel de
sistema de connect(). Si el valor devuelto en
errno es 0 y la
función devolvió &false;, es una indicación de que el error
ocurrió antes de la llamada a connect(). Esto es
lo más probable debido a un problema de inicialización del socket. Observe que
los argumentos errno y
errstr siempre serán pasados por
referencia.
&reftitle.examples;
Ejemplo de 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);
}
?>
]]>
Usar una conexión UDP
Recuperar el día y la hora desde el servicio "daytime" de UDP (puerto 13)
en localhost.
\n";
} else {
fwrite($fp, "\n");
echo fread($fp, 26);
fclose($fp);
}
?>
]]>
&reftitle.notes;
Los sockects UDP a veces parecerán estar abiertos sin un error,
incluso si el host remoto es inalcanzable. El error sólo
aparecerá cuando se lea o escriba información desde/en el socket.
La razón de esto es que UDP es un protocolo no orientado a conexión,
lo que significa que el sistema operativo no intenta establecer
un enlace para el socket hasta que se necesite enviar o recibir informaicón.
&ipv6.brackets;
Dependiendo del entorno, pueden no estar disponibles el dominio Unix
o el tiempo de espera opcional de la conexión. Una lista de transportes
disponibles se puede recuperar unsando stream_get_transports.
Véase para una lista de transportes incluidos.
&reftitle.seealso;
stream_socket_server
stream_set_blocking
stream_set_timeout
stream_select
fgets
fgetss
fwrite
fclose
feof