Golang net.InterfaceByIndex(), InterfaceByName(), Addrs() and MulticastAddrs() functions example
package net
Golang net.InterfaceByIndex(), InterfaceByName(), Addrs() and MulticastAddrs() functions usage example
package main
import (
"fmt"
"net"
// "strings"
)
func main() {
firstInterface, err := net.InterfaceByIndex(1)
if err != nil {
fmt.Println(err)
}
fmt.Println("First interface : ", firstInterface)
byNameInterface, err := net.InterfaceByName("lo0")
if err != nil {
fmt.Println(err)
}
fmt.Println("Interface by Name : ", byNameInterface)
addresses, err := byNameInterface.Addrs()
// best to use for loop...but I'm lazy.
fmt.Println("Interface Addresses : ", addresses[0].String())
fmt.Println("Interface Addresses : ", addresses[1].String())
fmt.Println("Interface Addresses : ", addresses[2].String())
multicastaddresses, err := byNameInterface.MulticastAddrs()
fmt.Println("Interface Multicast Addresses : ", multicastaddresses[0].String())
fmt.Println("Interface Multicast Addresses : ", multicastaddresses[1].String())
fmt.Println("Interface Multicast Addresses : ", multicastaddresses[2].String())
// show all available network interfaces
//interfaces, err := net.Interfaces()
//if err != nil {
// fmt.Print(err)
// return
// }
//for _, i := range interfaces {
// fmt.Printf("Name : %v \n", i.Name)
// see http://golang.org/pkg/net/#Flags
// fmt.Println("Interface type and supports : ", i.Flags.String())
// if strings.Contains(i.Flags.String(), "up") {
// fmt.Println("Status : UP")
// } else {
// fmt.Println("Status : DOWN")
// }
// if strings.Contains(i.Flags.String(), "multicast") {
// fmt.Println("Support multicast : YES")
// } else {
// fmt.Println("Support multicast : NO")
// }
//}
}
Sample output :
First interface : &{1 16384 lo0 up|loopback|multicast}
Interface by Name : &{1 16384 lo0 up|loopback|multicast}
Interface Addresses : ::1/128
Interface Addresses : 127.0.0.1/8
Interface Addresses : fe80::1/64
Interface Multicast Addresses : ff02::fb
Interface Multicast Addresses : 224.0.0.251
Interface Multicast Addresses : ff02::2:ff33:9cc0
References :
http://golang.org/pkg/net/#InterfaceByIndex
http://golang.org/pkg/net/#InterfaceByName
Advertisement
Something interesting
Tutorials
+20.2k Golang : Compare floating-point numbers
+4.4k Golang : Valued expressions and functions example
+12.9k Python : Convert IPv6 address to decimal and back to IPv6
+20k Golang : How to run your code only once with sync.Once object
+6.3k Golang : Selection sort example
+7.4k Linux : How to fix Brother HL-1110 printing blank page problem
+17.5k Golang : Linked list example
+21.9k Golang : Use TLS version 1.2 and enforce server security configuration over client
+10.7k Golang : Interfacing with PayPal's IPN(Instant Payment Notification) example
+7.9k Javascript : How to check a browser's Do Not Track status?
+8.5k Android Studio : Import third-party library or package into Gradle Scripts
+6.2k Golang : Extract XML attribute data with attr field tag example