Crates.io | tcp-channel-client |
lib.rs | tcp-channel-client |
version | |
source | src |
created_at | 2023-07-15 18:36:46.716419+00 |
updated_at | 2025-01-21 10:31:09.660098+00 |
description | Asynchronous tcpclient based on aqueue actor. |
homepage | |
repository | https://github.com/luyikk/tcpclient |
max_upload_size | |
id | 917343 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
#![feature(async_closure)]
use tcpclient::{TcpClient,SocketClientTrait};
use tokio::io::AsyncReadExt;
use std::error::Error;
use log::LevelFilter;
#[tokio::main]
async fn main()->Result<(),Box<dyn Error>> {
// set logger out
env_logger::Builder::new().filter_level(LevelFilter::Debug).init();
// connect echo server
let client =
TcpClient::connect("127.0.0.1:5555", async move |_, client, mut reader| {
// read buff from target server
let mut buff=[0;7];
while let Ok(len) = reader.read_exact(&mut buff).await {
// send buff to target server
println!("{}",std::str::from_utf8(&buff[..len])?);
client.send(buff[..len].to_vec()).await?;
}
// return true need disconnect,false not disconnect
// if true and the current state is disconnected, it will be ignored.
Ok(true)
}, ()).await?;
// connect ok send buff to target server
client.send(b"1234567".to_vec()).await?;
// test disconnect readline
let mut str = "".into();
std::io::stdin().read_line(&mut str)?;
// disconnect target server
client.disconnect().await?;
// wait env logger out show
std::io::stdin().read_line(&mut str)?;
Ok(())
}