Tcp wrapper library
Async tcp wrapper
toml
[dependencies]
tcp_wrapper = "0.2"
tokio = { version = "1", features = ["full"] }
Then, on your main.rs:
```rust,norun
use tcpwrapper::clientasync::TcpClient;
use tcpwrapper::serverasync::TcpServer;
use tcpwrapper::server_async::Connection;
use std::thread;
use std::error::Error;
use tokio::spawn;
use tokio::join;
[tokio::main]
async fn main() -> Result<(), Box> {
let tcpserver = TcpServer::bind("127.0.0.1:8085").await?;
join!(
server(tcpserver),
client()
);
Ok(())
}
async fn server(server: TcpServer) -> Result<(), Box> {
let connection = server.accept().await?;
let req = connection.recvrequest().await?;
asserteq!(req, "Hello, server");
connection.sendresponse("Hello, client").await?;
Ok(())
}
async fn client() -> Result<(), Box> {
let mut client = TcpClient::connect("127.0.0.1:8085").await?;
let response = client.sendrequest("Hello, server").await?;
assert_eq!(response, "Hello, client");
Ok(())
}
```
Std tcp wrapper
toml
[dependencies]
tcp_wrapper = "0.2"
Then, on your main.rs:
```rust,norun
use tcpwrapper::clientstd::Client;
use tcpwrapper::server_std::TcpServer;
use std::error::Error;
use std::thread;
fn main() -> Result<(), Box> {
let server = TcpServer::bind("127.0.0.1:9092")?;
thread::spawn(move || {
for elem in server.incoming() {
let mut e = elem.unwrap();
let reqstr = e.recvrequest().unwrap();
e.sendresponse("test").unwrap();
}
});
let mut client = Client::connect("127.0.0.1:9092")?;
let resp = client.sendrequest("hello").unwrap();
assert_eq!(resp, "test");
Ok(())
}
```
License
This project is licensed under the [MIT license].