Files
simple-rust-tests/__linux/unixsocket/src/main.rs
2020-11-14 00:14:13 +08:00

32 lines
1.1 KiB
Rust

use tokio::net::UnixListener;
use tokio::stream::StreamExt;
use tokio::io::AsyncWriteExt;
use tokio::io::AsyncReadExt;
#[tokio::main]
async fn main() {
let mut listener = UnixListener::bind("sampleunix.sock").unwrap();
while let Some(stream) = listener.next().await {
match stream {
Ok(stream) => {
println!("New client: {:?}", stream);
let (mut read, mut write) = stream.into_split();
let s = tokio::spawn(async move {
let mut buf = [0; 1024];
match read.read(&mut buf[..]).await {
Err(e) => println!("Read err: {}", e),
Ok(n) => {
println!("Read: {:?}", &buf[0..n]);
println!("Read: {}", String::from_utf8_lossy(&buf[0..n]));
}
}
});
s.await.ok();
write.write(b"hello").await.ok();
}
Err(e) => {
println!("Unix listern error: {}", e);
}
}
}
}