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ónDescripció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ónDescripció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

💡 Alternativa: Para protocolos de alto nivel, usá cliente_http para HTTP/1.1, cliente_h2 para HTTP/2, o websocket para conexiones WebSocket.