go-stun1/client.go
2017-07-13 11:56:58 +08:00

42 lines
882 B
Go

package main
import (
"flag"
"fmt"
"github.com/bhpike65/go-stun/nat"
"net"
"os"
)
var server = flag.String("server", "stun.l.google.com:19302", "STUN server to query")
var altServer = flag.String("alt-server", "", "alternative STUN server to query")
var local = flag.String("local", "", "local ip:port to use")
func main() {
flag.Parse()
if *local == "" {
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println("get interface addrs error: ", err.Error())
os.Exit(-1)
}
for _, a := range addrs {
if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
*local = ipnet.IP.String() + ":0"
}
}
}
}
res, err := nat.Discovery(*local, *server, *altServer)
if err != nil {
fmt.Println("nat discovery error: ", err.Error())
os.Exit(-1)
}
fmt.Printf("nat discovery result:\n%s", res)
return
}