Skip to content

Instantly share code, notes, and snippets.

@thearchitect
Created August 27, 2016 21:42
Show Gist options
  • Save thearchitect/82e3fe6625dbb5592be7f48e83506ca1 to your computer and use it in GitHub Desktop.
Save thearchitect/82e3fe6625dbb5592be7f48e83506ca1 to your computer and use it in GitHub Desktop.
package main
import (
"log"
"net"
"time"
)
func perr(err error) {
if err != nil {
panic(err)
}
}
func main() {
ifaces, err := net.Interfaces()
perr(err)
for _, iface := range ifaces {
log.Println("INTERFACE", iface)
addrs, err := iface.Addrs()
perr(err)
for _, addr := range addrs {
log.Println("ADDR", addr)
if addr, ok := addrs[0].(*net.IPNet); ok {
log.Println("OK net.IPNet")
tcpAddr := &net.TCPAddr{
IP: addr.IP,
}
d := net.Dialer{
Timeout: 3 * time.Second,
LocalAddr: tcpAddr,
}
_, err = d.Dial("tcp", "google.com:80")
if err != nil {
log.Println("ERROR", err)
} else {
log.Println(">>> WOOHOO")
}
} else {
log.Println("NOT net.IPNet")
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment