socket_recv
En esta página
socket_recv
Recibe datos de un socket conectado
Descripción#
socket_recv(Socket $socket, string $data, int $length, int $flags): int
```php
La función `socket_recv` recibe `length` bytes de datos en `data` desde `socket`. `socket_recv` puede ser utilizada para recuperar datos desde sockets conectados. Asimismo, los flags permiten modificar el comportamiento de la función.
`data` se pasa por referencia, por lo que debe estar presente en la lista de argumentos. Los datos recibidos desde la `socket` por `socket_recv` serán devueltos en `data`.
## Parámetros
`socket`
`socket` debe ser una instancia de `Socket` previamente creada por `socket_create`.
`data`
Los datos recibidos serán transmitidos en `data`. Si ocurre un error, si la conexión está cerrada o si no hay datos disponibles, `data` valdrá entonces `null`.
`length`
Hasta `length` bytes serán leídos desde el host remoto.
`flags`
El valor de `flags` puede ser una combinación de los siguientes flags, agrupados mediante el operador OR binario (`|`).
| Flag | Descripción |
|----|----|
| `MSG_OOB` | Trata datos fuera de banda. |
| `MSG_PEEK` | Recibe los datos desde el inicio de la cola sin eliminarlos de la cola. |
| `MSG_WAITALL` | Bloquea antes de que al menos `length` bytes sean recibidos. Sin embargo, si se intercepta una señal o la conexión se termina, la función puede devolver menos datos. |
| `MSG_DONTWAIT` | Si este flag está especificado, la función devolverá datos cuando normalmente habría bloqueado. |
Valores posibles de `flags`
## Valores devueltos
`socket_recv` devuelve el número de bytes recibidos, o `false` si ha ocurrido un error. El código de error actual puede ser recuperado llamando a `socket_last_error`. Este código de error puede ser pasado a la función `socket_strerror` para obtener una representación textual del error.
## Historial de cambios
| Versión | Descripción |
|----|----|
| 8.0.0 | `socket` ahora es una instancia de `Socket` ; anteriormente, era un `resource`. |
## Ejemplos
Ejemplos con `socket_recv`
Este ejemplo es una reescritura del ejemplo tomado en [???](#sockets.examples) para utilizar `socket_recv`.
```php
Resultado del ejemplo anterior es similar a:
<h2>Conexión TCP/IP</h2>
OK.
Intentando conectar a '208.77.188.166' en el puerto '80'...OK.
Enviando una solicitud HTTP HEAD...OK.
Leyendo la respuesta:
123 bytes leídos 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.