Function tcp_handler::compress_encrypt::recv
source · pub async fn recv<R: AsyncReadExt + Unpin + Send>(
stream: &mut R,
cipher: AesCipher
) -> Result<(BytesMut, AesCipher), PacketError>
Available on crate features
compression
and encrypt
only.Expand description
Recv message in compress_encrypt tcp-handler protocol.
You may use some crate to read and write data,
such as serde
,
postcard
and
variable-len-reader
.
§Arguments
stream
- The tcp stream orReadHalf
.
§Example
use anyhow::Result;
use bytes::Buf;
use tcp_handler::compress_encrypt::{recv, server_init, server_start};
use tokio::net::TcpListener;
use variable_len_reader::VariableReader;
#[tokio::main]
async fn main() -> Result<()> {
let server = TcpListener::bind("localhost:25564").await?;
let (mut server, _) = server.accept().await?;
let s_init = server_init(&mut server, &"test", |v| v == "0").await;
let mut cipher = server_start(&mut server, s_init).await?;
let (reader, c) = recv(&mut server, cipher).await?;
let mut reader = reader.reader(); cipher = c;
let _message = reader.read_string()?;
Ok(())
}