DocumentaciónRECIBIR(s)

RECIBIR(s)\texttt{RECIBIR}(s)

Nombre

RECIBIR - Recibe datos desde un socket conectado.

Sinopsis

ok = RECIBIR(s)

Descripcion

Lee datos desde un socket conectado y guarda el resultado dentro del mismo objeto SOCKET.

El contenido recibido queda disponible como texto crudo y, cuando aplica, tambien como tabla interpretada por el runtime.

Comportamiento

  • Recibe un SOCKET por referencia.
  • Guarda el contenido en s.data y, cuando aplica, en s.data_tabla.
  • Retorna VERDADERO si se recibieron datos correctamente.

Funciones API relacionadas

  • CONECTAR()
  • ENVIAR()
  • HAY_DATOS()
  • DESCONECTAR()

Parámetros

ParámetroTipoDescripción
sSOCKETSocket conectado (se pasa por referencia). Debe haber sido conectado previamente con CONECTAR(s) o provenir de ACEPTAR(servidor).

Valor de retorno

LOGICO - Resultado logico.

  • VERDADERO: se recibieron datos exitosamente.
  • FALSO: en caso contrario (por ejemplo, conexión cerrada o error).

Ejemplo

ejemplo.blox
//
// RECIBIR() - Recibe datos a través del socket y los almacena en los 
// atributos de la variable SOCKET. 
//
// Sintaxis: 
// recibido = RECIBIR(s)
//
// Recibe como parámetro la variable tipo SOCKET.
//
// Los datos recibidos se almacenan en el atributo <s.data> (STRING) y 
// en <s.data_tabla> (TABLA), si los datos pueden ser interpretados como 
// tabla.
//
// Ejemplo:
//      LOGICO recibido
//      recibido = RECIBIR(s)
//      SI (recibido) ENTONCES IMPRIMIR("Mensaje: ", s.data) FIN_SI
//
// Devuelve VERDADERO si se recibieron datos exitosamente, 
// FALSO en caso contrario.
//


// CLIENTE en comunicacion TCP/IP
//
FUNCION PRINCIPAL
INICIO

    TABLA t
    NUMERICO i, fin
    LOGICO recibido
    SOCKET s

    s.ip = "127.0.0.1"
    s.port = 5555
    
    CONECTAR(s)

    SI (s.conectado) ENTONCES
        IMPRIMIR("\n\nConectado al servidor.\n")
        
        i = 1
        HACER
            recibido = RECIBIR(s)
            SI (recibido == VERDADERO) ENTONCES
                IMPRIMIR("\n> ", s.data)    // El servidor pasa los datos en dos formatos s.data y s.data.tabla
                i = i + 1
            FIN_SI
        MIENTRAS_QUE (recibido) 

        DESCONECTAR(s)
    SINO
        IMPRIMIR("\n\nNo se pudo conectar al servidor.")
    FIN_SI

FINAL