Nyx con Ejemplos

Servidor TCP

Un servidor eco TCP mínimo usando primitivas integradas. tcp_listen se enlaza a un puerto, tcp_accept espera una conexión de cliente y luego se lee y escribe datos en el socket del cliente. Esta es la base de todos los servidores de red de Nyx.

Código

// TCP echo server — listen, accept, echo back

fn main() -> int {
    let server: int = tcp_listen("0.0.0.0", 9000)
    if server < 0 {
        print("failed to listen on port 9000")
        return 1
    }
    print("echo server listening on :9000")

    let client: int = tcp_accept(server)
    if client < 0 {
        print("accept failed")
        return 1
    }
    print("client connected")

    let msg: String = tcp_read_line(client)
    print("received: " + msg)
    tcp_write(client, "echo: " + msg + "\n")

    tcp_close(client)
    tcp_close(server)
    print("done")
    return 0
}

Salida

echo server listening on :9000
client connected
received: hello
done

Explicación

tcp_listen("0.0.0.0", port) crea un socket de escucha en todas las interfaces. tcp_accept bloquea hasta que un cliente se conecta y devuelve un nuevo descriptor de archivo para esa conexión. El servidor lee una línea, la devuelve como eco con el prefijo "echo: " y cierra ambos sockets.

Para un servidor de producción, se envolvería el accept en un bucle while y se generaría un hilo por cliente, o se usaría http_serve_mt, que maneja el pool de hilos automáticamente.

← Anterior Siguiente →

Source: examples/by-example/47-tcp-server.nx