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 在 网络编程
每月581次下载
在 3 个crate中使用(通过 netxserver)
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