30 lines
858 B
Rust
30 lines
858 B
Rust
use tokio::net::TcpStream;
|
|
use tokio::io::AsyncWriteExt;
|
|
use tokio::time::{Duration, sleep};
|
|
use anyhow::Result;
|
|
use super::Cli;
|
|
|
|
|
|
pub async fn create_tcp_stream() -> Result<TcpStream> {
|
|
let stream = TcpStream::connect("127.0.0.1:7753").await?;
|
|
Ok(stream)
|
|
}
|
|
|
|
pub async fn try_send(stream: Result<TcpStream>, params: Cli) -> Result<()> {
|
|
use serde_json::to_string;
|
|
let mut stream = stream?;
|
|
loop {
|
|
if stream.writable().await.is_err() {
|
|
sleep(Duration::from_millis(100)).await;
|
|
continue;
|
|
}
|
|
// let msg: Cli = from_str(&format!("{:?}", params))?;
|
|
let msg= to_string(¶ms)?;
|
|
// let msg = r"HTTP/1.1 POST\r\nContent-Length: 14\r\nContent-Type: text/plain\r\n\r\nHello, World!@";
|
|
|
|
stream.write_all(msg.as_bytes()).await?;
|
|
// ...
|
|
break;
|
|
}
|
|
Ok(())
|
|
} |