Merge pull request #816 from zhaxzhax/add-udpscket-peeraddr

Add UdpSocket::PeerAddr #307
master
Yoshua Wuyts 5 years ago committed by GitHub
commit a602a91d83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -88,6 +88,32 @@ impl UdpSocket {
})) }))
} }
/// Returns the peer address that this listener is connected to.
///
/// This can be useful, for example, when connect to port 0 to figure out which port was
/// actually connected.
///
/// # Examples
///
/// ```no_run
/// # fn main() -> std::io::Result<()> { async_std::task::block_on(async {
/// #
/// use async_std::net::UdpSocket;
///
/// 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?;
/// let addr = socket1.peer_addr()?;
/// #
/// # Ok(()) }) }
/// ```
pub fn peer_addr(&self) -> io::Result<SocketAddr> {
self.watcher
.get_ref()
.peer_addr()
.context(|| String::from("could not get peer address"))
}
/// Returns the local address that this listener is bound to. /// Returns the local address that this listener is bound to.
/// ///
/// This can be useful, for example, when binding to port 0 to figure out which port was /// This can be useful, for example, when binding to port 0 to figure out which port was

@ -19,7 +19,7 @@ fn send_recv() -> io::Result<()> {
socket1.connect(socket2.local_addr()?).await?; socket1.connect(socket2.local_addr()?).await?;
socket2.connect(socket1.local_addr()?).await?; socket2.connect(socket1.local_addr()?).await?;
assert_eq!(socket1.peer_addr()?, socket2.local_addr()?);
socket1.send(THE_MERCHANT_OF_VENICE).await?; socket1.send(THE_MERCHANT_OF_VENICE).await?;
let mut buf = [0u8; 1024]; let mut buf = [0u8; 1024];

Loading…
Cancel
Save