(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_recv — Recibe información desde un socket conectado
$socket
   , string &$buf
   , int $len
   , int $flags
   ) : int
   La función socket_recv() recibe
   len bytes de información en buf desde
   socket. socket_recv() se puede
   usar para reunir información desde sockets conectados. Además, se pueden
   especificar una o más banderas para modificar el comportamiento de la
   función.
  
   buf es pasado por referencia, por lo que debe ser
   especificado como una variable en la lista de argumentos. La información leída desde
   socket por socket_recv()
   será devuelta en buf.
  
socket
       socket debe ser un recurso socket previamente
       creado por socket_create().
      
buf
       La información recibida será traida a la variable especifivada por
       buf. Si ocurre un error, si la
       conexión es reiniciada, o si no hay información
       disponible, buf será establecido a NULL.
      
len
       Se obtendrán hasta len bytes desde el host remoto.
      
flags
       El valor de flags puede ser una combinación de
       las siguientes banderas, unidas con el operador binario OR
       (|).
      
| Bandera | Descripción | 
|---|---|
| MSG_OOB | Procesar información fuera de banda. | 
| MSG_PEEK | Recibir informaicón desde el inicio de la cola recibida sin eliminarla de la cola. | 
| MSG_WAITALL | Bloquea hasta que al menos se reciba lenbytes.
           Sin embargo, si se captura una señal o el host remoto se desconecta, la
           función puede devolver menos información. | 
| MSG_DONTWAIT | Con esta bandera establecida, la función devuelve incluso si normalmente habría bloqueado. | 
   socket_recv() devuelve el número de bytes recibidos,
   o FALSE si hubo un error. El código de error real se puede recuperar
   llamando a socket_last_error(). Este código de error se puede
   pasar a socket_strerror() para obtener una explicación textual
   del error.
  
Ejemplo #1 Un ejemplo de socket_recv()
Este ejemplo es un reescrito sencillo del primer ejemplo de Ejemplos para usar socket_recv().
<?php
error_reporting(E_ALL);
echo "<h2>Conexión TCP/IP</h2>\n";
/* Obtener el puerto del servicio WWW. */
$service_port = getservbyname('www', 'tcp');
/* Obtener la dirección IP del host objetivo. */
$address = gethostbyname('www.example.com');
/* Crear un socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() falló: razón: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}
echo "Intentando conectar a '$address' en el puerto '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() falló.\nRazón: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Enviando petición HTTP HEAD...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Leyendo la respuesta:\n\n";
$buf = 'Este es mi buffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
    echo "Leídos $bytes bytes desde socket_recv(). Cerrando el socket...";
} else {
    echo "socket_recv() falló; razón: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);
echo $buf . "\n";
echo "OK.\n\n";
?>
El ejemplo de arriba producirá algo parecido a esto:
<h2>Conexión TCP/IP</h2> OK. Intentando conectar a '208.77.188.166' en el puerto '80'...OK. Enviando petición HTTP HEAD...OK. Leyendo la respuesta: Leídos 123 bytes desde socket_recv(). Cerrando el socket...HTTP/1.1 200 OK Date: Mon, 14 Sep 2009 08:56:36 GMT Server: Apache/2.2.3 (Red Hat) Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT ETag: "b80f4-1b6-80bfd280" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 OK.