39 个版本 (18 个稳定版)

2.0.0 2024年1月18日
1.6.1 2023年4月20日
1.6.0 2022年3月20日
1.5.3 2021年12月11日
0.1.5 2020年10月30日

#984网络编程

Download history 7/week @ 2024-04-14 8/week @ 2024-04-21 1/week @ 2024-04-28 12/week @ 2024-05-26 14/week @ 2024-06-02 14/week @ 2024-06-09 2/week @ 2024-06-16 9/week @ 2024-06-23 142/week @ 2024-06-30 54/week @ 2024-07-14 3/week @ 2024-07-21 524/week @ 2024-07-28

每月581次下载
3 个crate中使用(通过 netxserver

MIT/Apache

16KB
325

#rust tcp 服务器帧。

  • 版本 2.+ 最低支持的 Rust 版本:1.75 或更高

客户端 crate url

示例 Echo

use anyhow::Result;
use std::sync::Arc;
use tcpserver::{Builder, IPeer, ITCPServer};
use tokio::io::AsyncReadExt;

#[tokio::main]
async fn main() -> Result<()> {
    let tcpserver: Arc<dyn ITCPServer<()>> = Builder::new("0.0.0.0:5555")
        .set_connect_event(|addr| {
            println!("{:?} connect", addr);
            true
        })
        .set_stream_init(|tcp_stream| async move { Ok(tcp_stream) })
        .set_input_event(|mut reader, peer, _| async move  {
            let mut buff = [0; 4096];
            while let Ok(len) = reader.read(&mut buff).await {
                if len == 0 {
                    break;
                }
                peer.send_ref(buff[..len].to_vec()).await?;
            }
            println!("{:?} disconnect", peer.addr());
            Ok(())
        })
        .build()
        .await;
    tcpserver.start_block(()).await?;
    Ok(())
}

依赖项

~3–12MB
~131K SLoC