Forum und email

stream_socket_recvfrom

(PHP 5)

stream_socket_recvfrom — Recibe datos desde un socket, conectado o no

Descripción

string stream_socket_recvfrom ( resource $socket , int $longitud [, int $banderas [, string &$direccion ]] )

La función stream_socket_recvfrom() acepta datos desde un socket remoto, hasta una cantidad de longitud bytes. Si se provee una direccion , ésta será definida con la dirección del socket remoto.

El valor de banderas puede ser cualquier combinación de los siguientes:

valores posibles para banderas
STREAM_OOB Procesa datos OOB (out-of-band).
STREAM_PEEK Recuperar datos desde el socket, pero no consumir el búfer. Llamadas subsiguientes a fread() o stream_socket_recvfrom() verán los mismos datos.

Example#1 Ejemplo de stream_socket_recvfrom()

<?php
/* Abrir un socket de servidor en el puerto 1234 en localhost */
$servidor stream_socket_server('tcp://127.0.0.1:1234');

/* Aceptar una conexion */
$socket stream_socket_accept($servidor);

/* Tomar un paquete (1500 es un tamanyo tipico) de datos OOB */
echo "Recibidos Out-Of-Band: '" stream_socket_recvfrom($socket1500STREAM_OOB) . "'\n";

/* Echar un vistazo a los datos en banda normales, pero no consumirlos. */
echo "Datos: '" stream_socket_recvfrom($socket1500STREAM_PEEK) . "'\n";

/* Recibir exactamente el mismo paquete de nuevo, pero eliminarlo del
 * bufer esta vez. */
echo "Datos: '" stream_socket_recvfrom($socket1500) . "'\n";

/* Cerrarlo */
fclose($socket);
fclose($servidor);
?>

Note: Si un mensaje recibido tiene una longitud mayor que el parámetro longitud , los bytes sobrantes pueden ser descartados dependiendo del tipo de socket del mensaje recibido (como UDP).

Note: Llamadas a stream_socket_recvfrom() sobre secuencias basadas en sockets, después de llamadas a funciones de secuencias basadas en búferes (como fread() o stream_get_line()) leen los datos directamente desde el socket y dejan de lado el búfer de la secuencia.

Vea también stream_socket_sendto(), stream_socket_client(), y stream_socket_server().