2
0
Fork 1
mirror of https://github.com/async-rs/async-std.git synced 2025-10-19 08:36:36 +00:00
This commit is contained in:
M H 2025-08-19 00:25:37 +08:00 committed by GitHub
commit ceace4e2e6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,42 @@
//! HTTP Hello World server
//!
//! To make an HTTP request do:
//!
//! ```sh
//! curl http://localhost:8080/foo
//! ```
use async_std::io;
use async_std::net::{TcpListener, TcpStream};
use async_std::prelude::*;
use async_std::task;
async fn process(stream: &mut TcpStream) -> io::Result<()> {
let msg = "HTTP/1.1 200 OK
Content-Length: 11
Content-Type: text/plain
hello world";
let mut buffer = [0; 512];
stream.read(&mut buffer).await?;
stream.write_all(msg.as_bytes()).await?;
Ok(())
}
fn main() -> io::Result<()> {
task::block_on(async {
let listener = TcpListener::bind("127.0.0.1:8080").await?;
println!("Listening on {}", listener.local_addr()?);
let mut incoming = listener.incoming();
while let Some(stream) = incoming.next().await {
let mut stream = stream?;
task::spawn(async move {
process(&mut stream).await.unwrap();
});
}
Ok(())
})
}