28个版本 (11个稳定版)

1.1.5 2024年7月1日
1.1.3 2024年1月18日
1.1.2 2023年3月6日
0.3.2 2022年5月25日
0.2.7 2020年10月30日

#136 in 异步

Download history 289/week @ 2024-06-29 163/week @ 2024-07-06 1123/week @ 2024-07-27

1,298 下载/每月

MIT/Apache

74KB
1.5K SLoC

kcpserver

Latest Version Rust Documentation Rust Report Card Rust CI

最好的RUST KCP服务器框架 (The best rust kcp server framework)

示例 Echo

use kcpserver::prelude::{
    kcp_module::{KcpConfig, KcpNoDelayConfig},
    *,
};
use tokio::io::AsyncReadExt;
use log::LevelFilter;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    env_logger::Builder::new()
        .filter_level(LevelFilter::Debug)
        .init();

    let mut config = KcpConfig::default();
    config.nodelay = Some(KcpNoDelayConfig::fastest());
    let kcp_server = KcpListener::new("0.0.0.0:5555", config, 1, |peer| async move {
        log::debug!("create kcp peer:{}", peer);
        let mut buf = [0; 1024];
        let mut reader = peer.get_reader();
        let mut writer = peer.get_writer();
        while let Ok(size) = reader.read(&mut buf).await {
            log::debug!("read peer:{} buff:{}", peer, size);          
            writer.write_all(&buf[..size]).await?;
            writer.flush().await?;
        }
        writer.shutdown().await?;
        log::debug!("kcp peer:{} closed", peer.to_string());
        Ok(())
    })?;
    kcp_server.start().await?;
    Ok(())
}

依赖

~5–13MB
~132K SLoC