小程序go-ip源码 - 使用golang获取本机IP

zuolinux · · 702 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

如何获取本机网卡的IP地址

应用场景

无需各种繁琐操作,直接双击打开go-ip.exe,即可看到本机网卡的全部IP

golang可以编译全平台(win/mac/linux)程序

运行效果(win10操作系统)

up-dbae5ef97b729f5365e144d917d9315f7db.png

代码

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")
}

编译

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

会得到一个main.exe文件

up-0daf2d28be3d8229af45fa18fc44a71820b.png

将 main.exe 改名为 ip.exe 即可。


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:zuolinux

查看原文:小程序go-ip源码 - 使用golang获取本机IP

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

702 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传