Advertisement
Guest User

Rust tokio

a guest
Aug 20th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.98 KB | None | 0 0
  1. #![feature(async_await)]
  2.  
  3. use tokio::{prelude::*, net::TcpListener};
  4.  
  5. #[tokio::main]
  6. async fn main() -> Result<(), Box<dyn std::error::Error>> {
  7.     let addr = "0.0.0.0:12345".parse()?;
  8.     let mut listener = TcpListener::bind(&addr).unwrap();
  9.  
  10.     loop {
  11.         let (mut socket, _) = listener.accept().await?;
  12.         tokio::spawn(async move {
  13.             let mut buf = [0; 32 * 1024];
  14.             loop {
  15.                 match socket.read(&mut buf).await {
  16.                     Ok(0) | Err(_) => return,
  17.                     Ok(read) => {
  18.                         let mut bytes = &buf[0..read];
  19.                         while let Some(clrf) = twoway::find_bytes(bytes, b"\r\n\r\n") {
  20.                             if socket.write_all(b"HTTP/1.1 200 Ok\r\nContent-Length: 11\r\n\r\nHello World").await.is_err() { return }
  21.                             bytes = &bytes[clrf + 4..];
  22.                         }
  23.                     }
  24.                 }
  25.             }
  26.         });
  27.     }
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement