2013-09-28 16:58:28 +00:00
|
|
|
// Serves as a simple example/test of discovering UPnP devices on the local
|
|
|
|
// network.
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
2013-12-31 18:36:26 +00:00
|
|
|
"github.com/huin/goupnp/dcps/internetgateway1"
|
2013-09-28 16:58:28 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2013-12-31 20:01:17 +00:00
|
|
|
clients, errors, err := internetgateway1.NewWANPPPConnection1Clients()
|
2013-12-31 18:36:26 +00:00
|
|
|
if err != nil {
|
2013-12-31 20:01:17 +00:00
|
|
|
fmt.Println("Error discovering service with UPnP: ", err)
|
2013-12-31 18:36:26 +00:00
|
|
|
return
|
|
|
|
}
|
2013-10-06 11:57:26 +00:00
|
|
|
|
2013-12-31 20:01:17 +00:00
|
|
|
if len(errors) > 0 {
|
|
|
|
fmt.Printf("Error discovering %d services:\n", len(errors))
|
|
|
|
for _, err := range errors {
|
|
|
|
fmt.Println(" ", err)
|
2013-12-31 18:36:26 +00:00
|
|
|
}
|
2013-12-31 20:01:17 +00:00
|
|
|
}
|
2013-10-06 11:57:26 +00:00
|
|
|
|
2013-12-31 20:01:17 +00:00
|
|
|
fmt.Printf("Successfully discovered %d services:\n", len(clients))
|
|
|
|
for _, client := range clients {
|
|
|
|
device := &client.RootDevice.Device
|
2013-10-06 11:57:26 +00:00
|
|
|
|
2013-12-31 20:01:17 +00:00
|
|
|
fmt.Println(" Device:", device.FriendlyName)
|
|
|
|
if addr, err := client.GetExternalIPAddress(); err != nil {
|
|
|
|
fmt.Printf(" Failed to get external IP address: %v\n", err)
|
|
|
|
} else {
|
|
|
|
fmt.Printf(" External IP address: %v\n", addr)
|
2013-09-28 16:58:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|