Golang : Get the IPv4 and IPv6 addresses for a specific network interface
Problem:
You need to find the IP address of a specific network interface on your machine for developing your application. Perhaps your machine has couple of network interfaces and your application needs to use a specific interface for security reason.
How to find the IP address either version 4 or 6?
Solution:
Use net
package Interfaces()
function. Below is an example of how to use the Interfaces()
to find out the available interfaces and then specify a network interface by name to list out the IP addresses.
NOTE : This example will enumerate all the available network interfaces. If you need to specify a particular interface on your machine, first find out the interface name and then plug in the name in net.InterfaceByName("name")
.
Here you go!
package main
import (
"fmt"
"net"
)
func main() {
// get available network interfaces for
// this machine
interfaces, err := net.Interfaces()
if err != nil {
fmt.Print(err)
return
}
for _, i := range interfaces {
fmt.Printf("Name : %v \n", i.Name)
byNameInterface, err := net.InterfaceByName(i.Name)
if err != nil {
fmt.Println(err)
}
//fmt.Println("Interface by Name : ", byNameInterface)
addresses, err := byNameInterface.Addrs()
for k, v := range addresses {
fmt.Printf("Interface Address #%v : %v\n", k, v.String())
}
fmt.Println("------------------------------------")
}
}
Sample output on my machine. Your machine result will be different.
Name : lo0
Interface Address #0 : ::1/128
Interface Address #1 : 127.0.0.1/8
Interface Address #2 : fe80::1/64
------------------------------------
Name : gif0
------------------------------------
Name : stf0
------------------------------------
Name : en3
Interface Address #0 : fe80::1aa6:f7ff:fe16:e80b/64
Interface Address #1 : 192.168.1.64/24
------------------------------------
If the network interface has no IP address, usually it means the status is DOWN.
References:
See also : Golang : How to detect a server/machine network interface capabilities?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+4.5k Chrome : How to block socketloop.com links in Google SERP?
+31.1k Golang : Get local IP and MAC address
+5.8k Linux/MacOSX : Search for files by filename and extension with find command
+7.7k Findstr command the Grep equivalent for Windows
+12.1k Elastic Search : Return all records (higher than default 10)
+5.8k Golang : Build new URL for named or registered route with Gorilla webtoolkit example
+15.7k Golang : Generate universally unique identifier(UUID) example
+13.4k Golang : Tutorial on loading GOB and PEM files
+17.7k Golang : Put UTF8 text on OpenCV video capture image frame
+9.8k Golang : Find and replace data in all files recursively
+27.1k Golang : dial tcp: too many colons in address
+18.5k Golang : Delete duplicate items from a slice/array