Socket UDP
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.
Código
// UDP send and receive — connectionless datagrams
fn main() -> int {
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")
let msg: String = "hello via UDP"
udp_sendto(sock, msg, "127.0.0.1", 9001)
print("sent: " + msg)
let received: String = udp_recvfrom(sock, 1024)
print("received: " + received)
tcp_close(sock)
return 0
}
Salida
UDP socket bound to :9001 sent: hello via UDP received: hello via UDP
Explicación
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).