Esta función necesita un endpoint de lectura. Intenta leer un paquete de datos que haya llegado a ese punto de acceso y colocar los datos en la zona de memoria apuntada por data. Para obtener un nuevo paquete los pasos que sigue son:
La operación es bloqueante, de forma que si no hay datos en la memoria la función se bloquea hasta que lleguen. Una vez obtenido un paquete copia los datos del mismo a la zona de memoria data y da como valor de retorno la cantidad de bytes de datos que había en el paquete.