小程序go-ip源碼 - 使用golang獲取本機IP

如何獲取本機網卡的IP地址

應用場景linux

無需各類繁瑣操做,直接雙擊打開go-ip.exe,便可看到本機網卡的所有IPgolang

golang能夠編譯全平臺(win/mac/linux)程序windows

運行效果(win10操做系統)app

up-dbae5ef97b729f5365e144d917d9315f7db.png

代碼ui

package main

// 獲取本機所有網卡的所有IP
// 2020-03-12 16:52

import (
    "fmt"
    "net"

    "fyne.io/fyne/app"
    "fyne.io/fyne/widget"
)

//獲取所有網卡的所有IP
func Ips() (map[string]string, error) {

    ips := make(map[string]string)

    //返回 interface 結構體對象的列表,包含了所有網卡信息
    interfaces, err := net.Interfaces()
    if err != nil {
        return nil, err
    }

    //遍歷所有網卡
    for _, i := range interfaces {

        // Addrs() 方法返回一個網卡上所有的IP列表
        address, err := i.Addrs()
        if err != nil {
            return nil, err
        }

        //遍歷一個網卡上所有的IP列表,組合爲一個字符串,放入對應網卡名稱的map中
        for _, v := range address {
            ips[i.Name] += v.String() + " "
        }
    }
    return ips, nil
}

func main() {

    var ips = make(map[string]string)
    ips, _ = Ips()

    var ipstring string

    //key是網卡名稱,value是網卡IP
    for k, v := range ips {
        ipstring += "adapter name: " + k + "  IP: " + v + "\n"
    }

    //使用 fyne 畫到 GUI 界面上
    myApp := app.New()
    myWindow := myApp.NewWindow("Network Info")
    myWindow.SetContent(widget.NewLabel(ipstring))

    myWindow.Show()
    myApp.Run()
    tidyUp()
}

func tidyUp() {
    fmt.Println("Exited")
}

編譯spa

go build -ldflags "-H windowsgui -s -w" main.go

會獲得一個main.exe文件操作系統

up-0daf2d28be3d8229af45fa18fc44a71820b.png

將 main.exe 更名爲 ip.exe 便可。3d

相關文章
相關標籤/搜索