32 lines
786 B
Rust
32 lines
786 B
Rust
use anyhow::Result;
|
|
use futures::future::TryFutureExt;
|
|
use tokio::{
|
|
io::{AsyncBufReadExt, BufReader},
|
|
net::{TcpListener, TcpStream},
|
|
};
|
|
|
|
async fn handle_client(mut socket: TcpStream) -> Result<()> {
|
|
let (read_half, write_half) = socket.split();
|
|
let mut reader = BufReader::new(read_half);
|
|
let mut buf = Vec::new();
|
|
reader.read_until(b'\n', &mut buf).await?;
|
|
|
|
let protocol_version = std::str::from_utf8(&buf)?.trim().parse::<u8>()?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
let mut listener = TcpListener::bind("0.0.0.0:7776").await?;
|
|
|
|
loop {
|
|
let (socket, _) = listener.accept().await?;
|
|
tokio::spawn(handle_client(socket).map_err(|err| {
|
|
eprintln!("error: {:?}", err);
|
|
}));
|
|
}
|
|
|
|
Ok(())
|
|
}
|