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

golang

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

纯记录

go
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

评论