(PHP 5)
stream_socket_recvfrom — Recibe datos desde un socket, conectado o no
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:
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($socket, 1500, STREAM_OOB) . "'\n";
/* Echar un vistazo a los datos en banda normales, pero no consumirlos. */
echo "Datos: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";
/* Recibir exactamente el mismo paquete de nuevo, pero eliminarlo del
* bufer esta vez. */
echo "Datos: '" . stream_socket_recvfrom($socket, 1500) . "'\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().