Simple UDP-only STUN client for resolving external IP address:port behind NAT.
Supports both sync and async.
Example (sync):
```rust use std::net::UdpSocket; use stunclient::StunClient; use std::net::{SocketAddr,ToSocketAddrs}; let localaddr : SocketAddr = "0.0.0.0:0".parse().unwrap(); let stunaddr = "stun.l.google.com:19302".tosocketaddrs().unwrap().filter(|x|x.isipv4()).next().unwrap(); let udp = UdpSocket::bind(localaddr).unwrap();
let c = StunClient::new(stun_addr);
let myexternaladdr = c.queryexternaladdress(&udp).unwrap(); ```
Example (async):
```rust use stunclient::StunClient; use std::net::{SocketAddr,ToSocketAddrs};
let localaddr : SocketAddr = "0.0.0.0:0".parse().unwrap(); let stunaddr = "stun.l.google.com:19302".tosocketaddrs().unwrap().filter(|x|x.isipv4()).next().unwrap(); let udp = tokio::net::udp::UdpSocket::bind(&localaddr).unwrap();
let c = StunClient::new(stunaddr); let f = c.queryexternaladdressasync(&udp); let myexternaladdr = f.await.unwrap(); ```
Old version (0.1) of stunclient is almost the same, but is for Tokio 0.1
.