UDP es un protocolo sin conexión: cada datagrama es independiente, sin handshake ni entrega garantizada. udp_bind crea un socket, udp_sendto envía datos a una dirección, y udp_recvfrom recibe datos. UDP es ideal para aplicaciones en tiempo real donde la baja latencia importa más que la confiabilidad.
// UDP send and receive — connectionless datagrams // Envío y recepción UDP — datagramas sin conexión fn main() -> int { // Bind a UDP socket to a local port let sock: int = udp_bind("127.0.0.1", 9001) if sock < 0 { print("failed to bind UDP socket") return 1 } print("UDP socket bound to :9001") // Send a datagram to a remote address let msg: String = "hello via UDP" udp_sendto(sock, msg, "127.0.0.1", 9001) print("sent: " + msg) // Receive a datagram (blocks until one arrives) let received: String = udp_recvfrom(sock, 1024) print("received: " + received) tcp_close(sock) return 0 }
UDP socket bound to :9001 sent: hello via UDP received: hello via UDP
Cómo funciona
udp_bind(host, port) crea un socket UDP vinculado a la dirección dada. A diferencia de TCP, no hay configuración de conexión — puedes enviar inmediatamente a cualquier dirección con udp_sendto(sock, data, host, port). udp_recvfrom(sock, max_bytes) bloquea hasta que llega un datagrama.
En este ejemplo, el socket se envía a sí mismo (loopback). En la práctica, tendrías sockets separados de emisor y receptor en distintos hosts o puertos. Los sockets UDP se cierran con tcp_close (el mismo mecanismo de descriptor de archivo subyacente).