Home  >  Article  >  Backend Development  >  How to use Golang to query network cards

How to use Golang to query network cards

PHPz
PHPzOriginal
2023-04-03 09:18:181862browse

Golang (also known as Go language) is an open source programming language suitable for building large-scale, high-reliability software. Golang was developed by Google in 2007 and has become one of the most popular programming languages. It is widely used in various server-side and Internet application fields, as well as distributed and network programming.

This article will introduce how to use Golang to query the network card.

  1. Using the net package

In Golang, you can easily access and operate the network using the functions in the net package. Specifically, we can obtain network card information by querying the network interface. The following code demonstrates how to obtain all network card interfaces on the host:

package main

import (
    "fmt"
    "net"
)

func main() {
    ifaces, err := net.Interfaces()
    if err != nil {
        fmt.Println("get interfaces err:", err)
        return
    }
    for _, iface := range ifaces {
        fmt.Printf("Interface:%v\n", iface.Name)
        addrs, err := iface.Addrs()
        if err != nil {
            fmt.Println("get addrs err:", err)
            continue
        }
        for _, addr := range addrs {
            fmt.Printf("\tIP Address:%v\n", addr)
        }
    }
}

In this code, we first call the net.Interfaces() function to obtain all network interfaces on the host, and loop through each network card for processing. For each network card, we call the Addrs() function to obtain the IP address associated with the network card and output relevant information.

  1. The meaning of the network card name

In the above code, we use iface.Name to get the name of the network card interface. In Linux systems, this name usually consists of several parts, such as "eth0", "wlan0", etc. The meaning of this name is as follows:

  • lo: Indicates loopback interface (Loopback)
  • ethN: Indicates Ethernet card interface, N is an integer, indicating the Nth network port
  • wlanN: Represents the wireless network card interface, N is an integer, representing the Nth wireless network port

In addition, there are some other types of interface names, such as tun, tap, etc., these The interfaces are used for applications such as network tunneling and virtualization.

  1. Get the MAC address of the network card

In network programming, the MAC address is a very important piece of information, because this address can uniquely represent a certain network card. In Golang, we can use the following code to obtain the MAC address of the network card:

package main

import (
    "fmt"
    "net"
)

func getMacAddress(iface net.Interface) net.HardwareAddr {
    addr, err := iface.Addrs()
    if err != nil {
        fmt.Println("get addrs err:", err)
        return nil
    }
    for _, addr := range addr {
        ipAddr, ok := addr.(*net.IPNet)
        if !ok {
            continue
        }
        if ipAddr.IP.IsLinkLocalUnicast() {
            return iface.HardwareAddr
        }
    }
    return nil
}

func main() {
    ifaces, err := net.Interfaces()
    if err != nil {
        fmt.Println("get interfaces err:", err)
        return
    }
    for _, iface := range ifaces {
        fmt.Printf("Interface:%v\n", iface.Name)
        fmt.Printf("\tMAC Address:%v\n", getMacAddress(iface))
    }
}

In this code, we define a function getMacAddress(), which receives a network card interface as a parameter and returns the The MAC address of the network card. We loop through all network ports in the main function and output the network port names and corresponding MAC addresses.

  1. Summary

This article introduces how to query the network card in Golang. By using the relevant functions in the net package, we can easily obtain all network interfaces on the host and obtain important information such as the MAC address of the network card. Understanding this information can help us with network programming and system management.

The above is the detailed content of How to use Golang to query network cards. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn