golang 使用 stun获取自己的公网ip,以及临时可用的公网端口

可以打一个nat背后的端口出来。 单纯查询自己的公网ip,用stun意义不大。不如多个在线查询 轮流 get。

纯记录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import (
	"fmt"

	"github.com/ccding/go-stun/stun"
)
func main() {
	client := stun.NewClient()
	client.SetServerHost("stun.syncthing.net", 3478)
	nat, host, err := client.Discover()
	fmt.Println("nat", nat)
	if err != nil {
		fmt.Println("无法获取公网IP:", err)
		return
	}
	if host == nil {
		fmt.Println("可能是无法连接到主机")
		return
	}
	fmt.Println("host", host.IP())
	fmt.Println("host String", host.String())
}

国内三个可用的:
stun.qq.com
stun.miwifi.com
stun.syncthing.net

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计