(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Recibe datos de un socket, conectado o no
$socket
,&$data
,$length
,$flags
,&$address
,&$port
= null
La función socket_recvfrom() recibe
length
bytes de datos del buffer data
desde address
en el puerto port
(si el socket
no es del tipo AF_UNIX
), utilizando
socket
. socket_recvfrom() puede ser utilizado
para recuperar los datos desde sockets conectadas o no. Asimismo,
uno o varios flags pueden ser especificados para modificar este comportamiento.
Los parámetros address
y port
deben ser pasados por referencia. Si el socket no está conectado,
address
contendrá la dirección internet del host remoto o
la ruta del socket Unix. Si el socket está conectado, address
valdrá null
. Asimismo, el parámetro port
contendrá
el puerto del host remoto en el caso de un socket AF_INET
o
AF_INET6
.
Nota: Esta función es segura binariamente.
socket
El parámetro socket
debe ser una instancia
de Socket creada por socket_create().
data
Los datos recuperados serán colocados en la variable especificada por este parámetro.
length
Hasta length
bytes deben ser recuperados
del host remoto.
flags
El valor de este parámetro puede ser una combinación de los flags siguientes,
unidos por un OR binario (|
).
Flag | Descripción |
---|---|
MSG_OOB |
Procesamiento fuera de la banda de datos. |
MSG_PEEK |
Recibe los datos desde el inicio de la cola de recepción sin eliminarlos de esta cola. |
MSG_WAITALL |
Bloquea hasta que al menos length bytes hayan
sido recibidos. Sin embargo, si se recibe una señal o el host remoto
se desconecta, la función podrá retornar menos datos.
|
MSG_DONTWAIT |
Cuando este flag está definido, la función retorna datos incluso si debería permanecer bloqueada. |
address
Si el socket es del tipo AF_UNIX
,
address
será la ruta hacia este fichero. De lo contrario,
para los sockets no-conectados, address
es la dirección
IP del host remoto, o null
si el socket está conectado.
port
Este argumento solo se aplica a los sockets AF_INET
y
AF_INET6
, y especifica el puerto remoto desde el cual
los datos son recibidos. Si el socket está conectado,
port
valdrá null
.
socket_recvfrom() retorna el número de bytes
recibidos, o false
si ocurre un error. El código de error actual puede
ser obtenido llamando a la función socket_last_error().
Este código de error puede ser pasado a la función socket_strerror()
para obtener una explicación textual del error.
Versión | Descripción |
---|---|
8.0.0 |
socket is a Socket instance now;
previously, it was a resource.
|
Ejemplo #1 Ejemplo con socket_recvfrom()
<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 1223);
$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);
echo "Recepción de $buf desde la dirección remota $from y del puerto remoto $port" . PHP_EOL;
?>
Este ejemplo inicializa un socket UDP en el puerto 1223 de la dirección 127.0.0.1 y muestra al menos 12 caracteres recibidos desde el host remoto.