Files
nocloud-core/src/main.rs
T
Stanislav N Mikhailov 1611d1c70b added protocol.MD
2026-07-18 17:22:53 +03:00

44 lines
1.2 KiB
Rust

mod connection; //модуль отвечающий за соединения
mod protocol; //модуль отвечающий за протокол
use tokio::net::{TcpListener};
use tokio::io;
use std::sync::atomic::{AtomicU64, Ordering};
use local_ip_address::local_ip;
use std::net::{IpAddr, Ipv4Addr};
use connection::Connection;
static NEXT_CONNECTION_ID: AtomicU64 = AtomicU64::new(1);
#[tokio::main]
async fn main() -> io::Result<()> {
let my_ip: IpAddr = local_ip().unwrap_or(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
let listener = TcpListener::bind((my_ip,32768)).await?;
println!("Сервер слушает {}:32768",my_ip);
loop {
let (stream, client_addr) = listener.accept().await?;
let connection_id =
NEXT_CONNECTION_ID.fetch_add(1, Ordering::Relaxed);
let connection = Connection::new(
connection_id,
client_addr,
stream,
);
tokio::spawn(async move {
if let Err(error) = connection.run().await {
eprintln!(
"Обработчик {connection_id}: ошибка: {error}"
);
}
});
}
}