Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang set network card

golang set network card

PHPz
PHPzasal
2023-05-22 14:47:081023semak imbas

Golang ialah bahasa pengaturcaraan berprestasi tinggi yang telah menjadi popular sejak beberapa tahun kebelakangan ini. Ia mempunyai ciri-ciri kebebasan platform, kod sumber terbuka dan keupayaan pengaturcaraan serentak yang berkuasa Ia digunakan secara meluas dalam pengaturcaraan rangkaian, sistem teragih, operasi dan penyelenggaraan automasi dan bidang lain.

Dalam pengaturcaraan rangkaian, selalunya perlu menyediakan kad rangkaian untuk melaksanakan fungsi komunikasi rangkaian. Artikel ini akan memperkenalkan cara menggunakan Golang untuk menyediakan kad rangkaian untuk melaksanakan penulisan susunan protokol TCP/IP.

1. Dapatkan senarai kad rangkaian

Di Golang, gunakan fungsi antara muka dalam pakej bersih untuk mendapatkan senarai kad rangkaian. Kod khusus adalah seperti berikut:

package main

import (
    "fmt"
    "net"
)

func main() {
    ifaces, err := net.Interfaces()
    if err != nil {
        fmt.Println("获取网卡列表失败:", err)
        return
    }
    for _, iface := range ifaces {
        fmt.Println(iface.Name, iface.HardwareAddr)
    }
}

Dengan memanggil fungsi net.Interfaces(), anda boleh mendapatkan semua maklumat antara muka kad rangkaian dan mendapatkan nama, alamat MAC dan atribut lain bagi setiap kad rangkaian melalui traversal gelung . Output hasil oleh program adalah seperti berikut:

en0 0a:00:27:00:00:00
en1 0a:00:27:00:00:01
lo0 00:00:00:00:00:00
bridge0 02:5b:a5:b5:73:01

Antaranya, en0 dan en1 mewakili kad rangkaian Ethernet, lo0 mewakili antara muka gelung balik setempat (127.0.0.1), dan bridge0 mewakili kad rangkaian jambatan.

2. Tetapkan alamat IP kad rangkaian

Di Golang, anda boleh menggunakan fungsi net.Interface.Addrs() untuk mendapatkan semua maklumat alamat IP dan memanggil fungsi net.ParseIP() untuk menghuraikan alamat IP dalam bentuk rentetan , dan panggil fungsi iface.Addrs() untuk mendapatkan semua alamat IP kad rangkaian, dan kemudian merentasi dan menetapkannya.

Berikut ialah contoh kod untuk menetapkan alamat IP kad rangkaian:

rreee

Kod sampel ini menggunakan fungsi net.InterfaceByName() untuk mendapatkan maklumat antara muka kad rangkaian bagi nama yang ditentukan, dan kemudian menggunakan fungsi iface.Addrs() untuk mendapatkan semua maklumat alamat IP, tetapan lintasan. Antaranya, alamat IP yang diwakili oleh rentetan dihuraikan kepada nilai jenis alamat IP dengan menggunakan fungsi net.ParseIP(), dan kemudian tatasusunan nilai jenis alamat IP dijana, dan akhirnya alamat IP ditetapkan kepada IP yang ditentukan alamat menggunakan fungsi iface.Addrs().(*net.IPNet).IP.To4()[0], iface.Addrs().(*net.IPNet).IP.To4()[1], iface.Addrs().(*net.IPNet).IP.To4()[2], 200).To4()) .

3. Dayakan kad rangkaian

Di Golang, anda boleh menggunakan perintah ifconfig untuk mendayakan kad rangkaian. Kod khusus adalah seperti berikut:

package main 

import (
    "fmt"
    "net"
)

func main() {
    iface, err := net.InterfaceByName("en0")
    if err != nil {
        fmt.Println("获取网卡接口失败:", err)
        return
    }
    addrs, _ := iface.Addrs()
    for _, addr := range addrs {
        if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
            if ipnet.IP.To4() != nil {
                err := iface.Addrs().(*net.IPNet).IP.To4()[0], iface.Addrs().(*net.IPNet).IP.To4()[1], iface.Addrs().(*net.IPNet).IP.To4()[2], 200).To4())
                if err != nil {
                    fmt.Println("设置IP地址失败:", err)
                    return
                }
                fmt.Println("设置IP地址成功:", ipnet.IP.String())
            }
        }
    }
}

Kod sampel ini menggunakan fungsi os/exec dalam pakej Command() untuk mencipta objek yang melaksanakan perintah shell, dan kemudian memanggil fungsi Run() objek untuk mendayakan kad rangkaian dengan nama yang ditentukan. Jika pengaktifan berjaya, perkataan "Kad rangkaian didayakan dengan jayanya" akan dicetak. Jika pembolehan gagal, mesej ralat dicetak.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan Golang untuk menulis kod pengaturcaraan rangkaian bagi merealisasikan fungsi menetapkan kad rangkaian bagi merealisasikan fungsi komunikasi protokol TCP/IP. Dengan menggunakan fungsi antara muka dalam pakej bersih untuk mendapatkan senarai kad rangkaian, dan menggunakan fungsi ifconfig untuk membolehkan kad rangkaian, anda boleh mencapai operasi yang berkesan pada antara muka rangkaian. Dalam pembangunan sebenar, operasi perlu dijalankan mengikut keperluan khusus untuk memenuhi keperluan aplikasi.

Atas ialah kandungan terperinci golang set network card. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Golang melaksanakan websocketArtikel seterusnya:Golang melaksanakan websocket