Módulos red y sockets — Comunicación en Red
Archivos: stdlib/std/red.fa, stdlib/std/sockets.fa
¿Por qué existen?
Proveen capacidades de comunicación en red de bajo y alto nivel. sockets.fa expone sockets TCP/UDP para comunicación directa, mientras que red.fa ofrece utilidades de red de más alto nivel como resolución DNS y verificación de conectividad.
⚠️ Sandbox: Por defecto, Forja bloquea todas las conexiones de red. Usá
--allow-net para habilitar conectividad. Ver Sandbox de Red.Módulo sockets — Sockets TCP/UDP
| Función | Descripción |
|---|---|
socket_tcp_conectar(host, puerto) | Conecta a un servidor TCP |
socket_tcp_escuchar(puerto) | Inicia un servidor TCP en un puerto |
socket_tcp_aceptar(server) | Acepta una conexión entrante |
socket_enviar(socket, datos) | Envía datos por el socket |
socket_recibir(socket, n) | Recibe hasta n bytes del socket |
socket_cerrar(socket) | Cierra el socket |
socket_udp_enviar(host, puerto, datos) | Envía un datagrama UDP |
socket_udp_recibir(puerto) | Recibe datagramas UDP en un puerto |
Módulo red — Utilidades de Red
| Función | Descripción |
|---|---|
dns_resolver(host) | Resuelve un nombre de host a dirección IP |
ping(host) | Verifica conectividad con un host |
puerto_disponible(puerto) | Verifica si un puerto está disponible |
ip_local() | Obtiene la dirección IP local |
Ejemplo: Cliente TCP básico
📄 cliente_tcp.fa
// Cliente TCP que envía y recibe datos
importar sockets
variable socket = sockets.tcp_conectar("localhost", 8080)
sockets.enviar(socket, "Hola servidor!")
variable respuesta = sockets.recibir(socket, 1024)
escribir_linea("Respuesta: " + respuesta)
sockets.cerrar(socket) Casos de uso
- Clientes de red: Conectarse a servicios TCP/UDP existentes
- Servidores simples: Implementar servidores de echo, chat, juegos
- Monitoreo: Verificar disponibilidad de puertos y servicios
- IoT: Comunicación con dispositivos de red
💡 Alternativa: Para protocolos de alto nivel, usá
cliente_http para HTTP/1.1, cliente_h2 para HTTP/2, o websocket para conexiones WebSocket.