HTTP服务器实现监听

This commit is contained in:
lsy 2024-10-17 01:15:58 +08:00
parent 077bf2f4aa
commit 51cfafb7ec
2 changed files with 49 additions and 0 deletions

42
rust/temp/src/core/mod.rs Normal file
View File

@ -0,0 +1,42 @@
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::{net, runtime};
use tokio::sync;
pub struct Server {
listener_addr: &'static str,
listener_port: i32,
status: bool,
route_vec:Vec<(&'static str,&'static str)>,
}
impl Server {
pub fn new(listener_port:i32) -> Self {
if listener_port < 1 || listener_port > 65535 {
panic!("listener port must be between 1 and 65535");
}
Self {
listener_addr: "127.0.0.1",
listener_port,
status: false,
route_vec: Vec::new(),
}
}
pub fn start(&self) {
let address=format!("{}:{}", self.listener_addr, self.listener_port);
let rt = runtime::Runtime::new().unwrap();
println!("Listening on {}", address);
let listener =rt.block_on(async { net::TcpListener::bind(address).await.expect("Failed to bind listener") });
rt.block_on(Self::receive(listener))
}
async fn receive(listener:net::TcpListener) {
loop {
let (mut socket, _) = listener.accept().await.expect("Failed to accept connection");
tokio::spawn(async move {
println!("监听成功");
let mut buf = [0; 1024];
socket.read(&mut buf).await.unwrap();
socket.write_all(b"Hello, World!").await.unwrap();
});
}
}
}

7
rust/temp/src/main.rs Normal file
View File

@ -0,0 +1,7 @@
use core::Server;
mod core;
fn main() {
let server = core::Server::new( 8000);
server.start();
}