38 releases (17 stable)
1.6.1 | Apr 20, 2023 |
---|---|
1.6.0 | Mar 20, 2022 |
1.5.5 | Feb 12, 2022 |
1.5.3 | Dec 11, 2021 |
0.1.5 | Oct 30, 2020 |
252 downloads per month
Used in 3 crates
(via netxserver)
16KB
325 lines
#rust tcp server frame.
client crate url
Examples Echo
#![feature(async_closure)]
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(async move |tcp_stream| Ok(tcp_stream))
.set_input_event(async move |mut reader, peer, _token| {
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(())
}
Dependencies
~3–13MB
~138K SLoC