Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![feature(async_await)]
- use tokio::{prelude::*, net::TcpListener};
- #[tokio::main]
- async fn main() -> Result<(), Box<dyn std::error::Error>> {
- let addr = "0.0.0.0:12345".parse()?;
- let mut listener = TcpListener::bind(&addr).unwrap();
- loop {
- let (mut socket, _) = listener.accept().await?;
- tokio::spawn(async move {
- let mut buf = [0; 32 * 1024];
- loop {
- match socket.read(&mut buf).await {
- Ok(0) | Err(_) => return,
- Ok(read) => {
- let mut bytes = &buf[0..read];
- while let Some(clrf) = twoway::find_bytes(bytes, b"\r\n\r\n") {
- if socket.write_all(b"HTTP/1.1 200 Ok\r\nContent-Length: 11\r\n\r\nHello World").await.is_err() { return }
- bytes = &bytes[clrf + 4..];
- }
- }
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement