https://github.com/vi/rust-stunclient
Simple Rust STUN client library for resolving external IP address and port of a UDP socket
https://github.com/vi/rust-stunclient
Last synced: about 1 year ago
JSON representation
Simple Rust STUN client library for resolving external IP address and port of a UDP socket
- Host: GitHub
- URL: https://github.com/vi/rust-stunclient
- Owner: vi
- Created: 2019-01-31T23:52:40.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-21T14:35:22.000Z (about 2 years ago)
- Last Synced: 2025-03-25T09:11:18.431Z (over 1 year ago)
- Language: Rust
- Size: 28.3 KB
- Stars: 19
- Watchers: 3
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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 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):
```rust
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`.