Nyx con Ejemplos

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).

← Anterior Siguiente →

Source: examples/by-example/48-udp-socket.nx