Estructuras Avanzadas: Sockets y Archivos
BLOX no se limita al cálculo numérico ni a los algoritmos clásicos.
También incorpora estructuras avanzadas que permiten interactuar con el mundo exterior: redes y archivos.
Con ellas, un programa BLOX puede:
- comunicarse con otros procesos
- leer y escribir información persistente
- automatizar tareas del sistema
- conectarse a servicios externos
- construir prototipos de herramientas distribuidas
Estas capacidades amplían el lenguaje desde el terreno académico hacia problemas reales de integración, automatización y comunicación.
Ademas, BLOX ya incorpora una capacidad avanzada adicional de persistencia estructurada: bases de datos SQLite.
Con el tipo SQLITE y la API sqlite.api, un programa puede:
- abrir o crear una base de datos
- ejecutar sentencias SQL
- consultar datos y recibirlos como
TABLA - persistir tablas planas entre ejecuciones
Para una explicacion completa, consulta el documento Bases de Datos.
Sockets TCP/IP
Comunicación entre programas
Un socket es un extremo de comunicación que permite a dos programas intercambiar datos a través de una red, normalmente usando el protocolo TCP/IP.
Gracias a los sockets, BLOX puede actuar como:
- cliente, conectándose a otro proceso
- servidor, esperando conexiones entrantes
Esto permite construir programas que dialogan en tiempo real con otras aplicaciones, servicios locales o sistemas remotos.
Declaración y uso básico
SOCKET s
s.ip = "127.0.0.1"
s.port = 5555
CONECTAR(s)
En este ejemplo:
s.ipdefine la dirección IP destinos.portdefine el puerto de comunicaciónCONECTAR(s)intenta establecer la conexión
La variable s de tipo SOCKET actúa como una estructura viva de comunicación, capaz de almacenar tanto el estado de la conexión como los datos recibidos.
Funciones principales de sockets
| Función | Descripción |
|---|---|
CONECTAR(s) | Conecta el socket a una IP y puerto determinados |
ESCUCHAR(s) | Prepara un socket para recibir conexiones entrantes |
ACEPTAR(s) | Acepta una conexión y retorna un nuevo socket conectado |
ENVIAR(s, x) | Envía datos a través del socket |
RECIBIR(s) | Recibe datos y los deja disponibles en el socket |
DESCONECTAR(s) | Cierra la conexión y libera recursos |
Idea general de uso
En modo cliente, un flujo típico sería:
SOCKET s
s.ip = "127.0.0.1"
s.port = 5555
CONECTAR(s)
ENVIAR(s, "Hola mundo")
RECIBIR(s)
DESCONECTAR(s)
Con esto, BLOX puede integrarse con servidores, APIs locales, herramientas auxiliares o procesos escritos en otros lenguajes.
Archivos
Trabajo con información persistente
BLOX también permite manipular archivos de texto de forma sencilla y directa.
Esto hace posible:
- guardar resultados
- cargar configuraciones
- procesar datos externos
- generar reportes
- automatizar tareas de lectura y escritura
En muchos programas, el archivo es la memoria persistente del sistema.
Mientras las variables viven durante la ejecución, los archivos permiten conservar información más allá del programa.
Tipo de dato ARCHIVO
Una variable de tipo ARCHIVO representa un manejador o referencia a un archivo abierto.
Su valor normalmente se obtiene con la función ABRIR().
ARCHIVO f
f = ABRIR("datos.txt", "r")
Si la apertura se realiza correctamente, f tendrá un valor válido.
Si falla, por ejemplo porque el archivo no existe en modo lectura, entonces f valdrá -1.
Modos de apertura
"r": lectura"w": escritura"a": agregado al final
Significado práctico
"r"abre un archivo existente para leerlo"w"crea un archivo nuevo o sobrescribe uno existente"a"conserva el contenido existente y agrega nuevas líneas al final
Funciones principales de archivos
| Función | Descripción | Ejemplo |
|---|---|---|
ABRIR() | Abre un archivo | f = ABRIR("test.txt", "w") |
ESCRIBIR_LINEA() | Escribe texto en un archivo | ESCRIBIR_LINEA(f, "texto") |
LEER_LINEA() | Lee una línea | linea = LEER_LINEA(f) |
CERRAR() | Cierra el archivo | CERRAR(f) |
FIN_ARCHIVO() | Indica si se alcanzó el final | SI (!FIN_ARCHIVO(f)) ... |
ARCHIVO_EXISTE() | Verifica existencia | existe = ARCHIVO_EXISTE("test.txt") |
BORRAR() | Elimina un archivo | BORRAR("test.txt") |
LISTAR_ARCHIVOS() | Lista archivos por patrón | cant = LISTAR_ARCHIVOS("*.dat", archivos) |
Ejemplo básico de escritura
ARCHIVO f
LOGICO ok
f = ABRIR("salida.txt", "w")
SI (f == -1) ENTONCES
ERROR("No se pudo abrir el archivo.")
FIN_SI
ok = ESCRIBIR_LINEA(f, "Hola desde BLOX")
CERRAR(f)
Ejemplo básico de lectura
ARCHIVO f
STRING linea
f = ABRIR("datos.txt", "r")
SI (f == -1) ENTONCES
ERROR("No se pudo abrir el archivo.")
FIN_SI
MIENTRAS (!FIN_ARCHIVO(f)) HACER
linea = LEER_LINEA(f)
IMPRIMIR(linea)
FIN_MIENTRAS
CERRAR(f)
Una visión práctica
Con sockets, BLOX puede conversar con otros programas.
Con archivos, puede conservar y recuperar información.
Juntas, estas dos capacidades convierten al lenguaje en una herramienta mucho más abierta al entorno real:
- procesa datos
- guarda resultados
- intercambia mensajes
- se conecta a otros sistemas
- automatiza tareas concretas
En otras palabras, BLOX no solo calcula: también lee, escribe y se comunica.