udp-relay

Crates.ioudp-relay
lib.rsudp-relay
version0.2.2
created_at2025-07-31 06:44:30.699711+00
updated_at2025-09-19 09:38:00.238948+00
descriptionA udp relayer
homepage
repository
max_upload_size
id1774497
size22,649
(xiaoquanjie)

documentation

https://docs.rs/udp-relay

README

udp转发器

use net_relay::RelayExt;
use udp_pool::net_pool::{Address, debug, Pool};

#[tokio::main]
async fn main() {
    init_log();

    if let Err(_e) = run().await {
        debug!("run error:{:?}", _e);
    }
}

async fn run() -> Result<(), net_relay::Error> {
    let mut relay = udp_relay::Relay::build(|b| {
        let pool = udp_pool::Pool::default();
        pool.add_backend(None, Address::from("127.0.0.1:3002"));
        b.bind("0.0.0.0:3001")
            .relay_fn(udp_relay::default_relay_fn)
            .pool(pool)
    })
    .map(|r| Box::new(r) as Box<dyn net_relay::Relay>)?;

    loop {
        tokio::select! {
            res = relay.run() => {
                return res;
            }
        };
    }
}

fn init_log() {
    #[cfg(feature = "tracing")]
    {
        tracing_subscriber::fmt()
            .with_max_level(tracing::Level::TRACE)
            .init();
    }
}
Commit count: 0

cargo fmt