2
0
Fork 1
mirror of https://github.com/async-rs/async-std.git synced 2025-01-16 10:49:55 +00:00
async-std/tests/udp.rs
Matthieu Le brazidec (r3v2d0g) 47ce9a370c
Add peek{,from} methods to UdpSocket
2020-08-15 15:06:33 +02:00

34 lines
1,007 B
Rust

#![cfg(not(target_os = "unknown"))]
use async_std::io;
use async_std::net::UdpSocket;
use async_std::task;
const THE_MERCHANT_OF_VENICE: &[u8] = b"
If you prick us, do we not bleed?
If you tickle us, do we not laugh?
If you poison us, do we not die?
And if you wrong us, shall we not revenge?
";
#[test]
fn send_recv_peek() -> io::Result<()> {
task::block_on(async {
let socket1 = UdpSocket::bind("127.0.0.1:0").await?;
let socket2 = UdpSocket::bind("127.0.0.1:0").await?;
socket1.connect(socket2.local_addr()?).await?;
socket2.connect(socket1.local_addr()?).await?;
assert_eq!(socket1.peer_addr()?, socket2.local_addr()?);
socket1.send(THE_MERCHANT_OF_VENICE).await?;
let mut buf = [0u8; 1024];
let n = socket2.peek(&mut buf).await?;
assert_eq!(&buf[..n], THE_MERCHANT_OF_VENICE);
let n = socket2.recv(&mut buf).await?;
assert_eq!(&buf[..n], THE_MERCHANT_OF_VENICE);
Ok(())
})
}