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