stream_socket_recvfrom
(PHP 5)
stream_socket_recvfrom — Recibir información de un socket, conectado o no
Descripción
$socket
, int $length
[, int $flags = 0
[, string &$address
]] )
stream_socket_recvfrom() acepta
información desde un socket remoto hasta length bytes.
Parámetros
-
socket -
El socket remoto.
-
length -
El número de bytes a recibir desde el
socket. -
flags -
El valor de
flagspuede ser una combinación de los siguientes valores:Valores posibles para flagsSTREAM_OOBProcesar información OOB (out-of-band, fuera de banda). STREAM_PEEKRecuperar información del socket, pero sin consumir el buffer. Las llamadas subsiguientes a fread() o stream_socket_recvfrom() verán la misma información. -
address -
Si se proporciona
address, será rellenado con la dirección de socket remoto.
Valores devueltos
Devuelve la información leída, como cadena
Ejemplos
Ejemplo #1 Ejemplo de stream_socket_recvfrom()
<?php
/* Abrir un socket de servidor al puerto 1234 en localhost */
$server = stream_socket_server('tcp://127.0.0.1:1234');
/* Aceptar una conexión */
$socket = stream_socket_accept($server);
/* Tomar un paquete (1500 es un tamaño de MTU típico) de información OOB */
echo "Recibido Fuera de Banda: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";
/* Echar un vistazo a la información en banda normal, pero sin comsumirla. */
echo "Información: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";
/* Obtener el mismo paquete exactamente otra vez, pero eliminándolo del buffer esta vez. */
echo "Información: '" . stream_socket_recvfrom($socket, 1500) . "'\n";
/* Cerrarlo */
fclose($socket);
fclose($server);
?>
Notas
Nota:
Si un mensaje recibido es mayor que el parámetro
length, los bytes en exceso se pueden desechar dependiendo del tipo de socket desde el que se recbió el mensaje (como UDP).
Nota:
Las llamadas a stream_socket_recvfrom() sobre flujos basados en sockets, después de las llamadas a funciones de flujos basados en buffer (como fread() o stream_get_line()), leen información directamente desde el socket y evitan el buffer del flujo.
Ver también
- stream_socket_sendto() - Envía un mensaje a un socket, ya esté conectado o no
- stream_socket_client() - Abrir una conexión de socket de dominio de Internet o Unix
- stream_socket_server() - Crear un socket de servidor de dominio de Internet o de Unix