#stun #port #ip #server #rmw #external #addr

rmw-stun

通过 STUN 服务器获取外部 IP 端口

3 个版本

0.0.3 2021 年 11 月 18 日
0.0.2 2021 年 11 月 18 日
0.0.1 2021 年 11 月 17 日

#5 in #addr

AGPL-3.0-or-later

10KB
99

rmw-stun

通过 STUN 服务器获取外部 IP 端口

使用示例

use async_std::net::UdpSocket;
use rmw_stun::external_addr;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::time::{Instant};

#[async_std::main]
async fn main() {
  let udp = UdpSocket::bind(SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 0))
    .await
    .unwrap();
  //let server = "not.exist.stun:3478";
  let server = "stun.cablenet-as.net:3478";
  let timeout = 3;
  let start = Instant::now();
  let addr = external_addr(&udp, server, timeout).await;
  let duration = start.elapsed();

  println!("external addr {:?} cost {:?}", addr, duration);
}

输出如下

external addr Ok(54.177.127.37:40143) cost 402.976326ms

关于

本项目属于 人民网络(rmw.link) 代码计划。

人民网络

依赖

~17–31MB
~591K SLoC