forked from mirror/async-std
Merge pull request #816 from zhaxzhax/add-udpscket-peeraddr
Add UdpSocket::PeerAddr #307
This commit is contained in:
commit
a602a91d83
2 changed files with 27 additions and 1 deletions
|
@ -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…
Reference in a new issue