9 releases
0.4.1 | May 21, 2024 |
---|---|
0.4.0 | Dec 30, 2022 |
0.3.1 | Oct 29, 2021 |
0.3.0 | Jul 25, 2021 |
0.1.0 | Jan 31, 2019 |
#1263 in Network programming
3,478 downloads per month
Used in turnhammer
14KB
230 lines
Simple UDP-only STUN client for resolving external IP address:port behind NAT.
Supports both sync and async.
Example (sync):
use std::net::UdpSocket;
use stunclient::StunClient;
use std::net::{SocketAddr,ToSocketAddrs};
let local_addr : SocketAddr = "0.0.0.0:0".parse().unwrap();
let stun_addr = "stun.l.google.com:19302".to_socket_addrs().unwrap().filter(|x|x.is_ipv4()).next().unwrap();
let udp = UdpSocket::bind(local_addr).unwrap();
let c = StunClient::new(stun_addr);
let my_external_addr = c.query_external_address(&udp).unwrap();
Example (async):
use stunclient::StunClient;
use std::net::{SocketAddr,ToSocketAddrs};
let local_addr : SocketAddr = "0.0.0.0:0".parse().unwrap();
let stun_addr = "stun.l.google.com:19302".to_socket_addrs().unwrap().filter(|x|x.is_ipv4()).next().unwrap();
let udp = tokio::net::udp::UdpSocket::bind(&local_addr).unwrap();
let c = StunClient::new(stun_addr);
let f = c.query_external_address_async(&udp);
let my_external_addr = f.await.unwrap();
Old version (0.1) of stunclient is almost the same, but is for Tokio 0.1
.
Dependencies
~3–11MB
~123K SLoC