2
0
Fork 1
mirror of https://github.com/async-rs/async-std.git synced 2025-01-16 18:59:55 +00:00
async-std/examples/socket-timeouts.rs
2019-08-26 11:38:11 -07:00

26 lines
663 B
Rust

use std::time::Duration;
use async_std::{io, net::TcpStream, prelude::*, task};
async fn get() -> io::Result<Vec<u8>> {
let mut stream = TcpStream::connect("example.com:80").await?;
stream
.write_all(b"GET /index.html HTTP/1.0\r\n\r\n")
.await?;
let mut buf = vec![];
io::timeout(Duration::from_secs(5), async {
stream.read_to_end(&mut buf).await?;
Ok(buf)
})
.await
}
fn main() {
task::block_on(async {
let raw_response = get().await.expect("request");
let response = String::from_utf8(raw_response).expect("utf8 conversion");
println!("received: {}", response);
});
}