```rust
use std::{env, error::Error};
use tokio::net::TcpListener;
use webparse::{Request, Response};
use dianmeng::{self, ProtResult, RecvStream, Server};
[tokio::main]
async fn main() -> Result<(), Box> {
let addr = env::args()
.nth(1)
.unwraporelse(|| "127.0.0.1:8080".tostring());
let server = TcpListener::bind(&addr).await?;
println!("Listening on: {}", addr);
loop {
let (stream, _) = server.accept().await?;
tokio::spawn(async move {
let mut server = Server::new(stream);
async fn operate(req: Request) -> ProtResultstring())?;
Ok(Some(response))
}
let _ = server.incoming(operate).await;
});
}
}
```