Bagaimana untuk mendapatkan alamat IP wifi saya menggunakan Golang?

WBOY
Lepaskan: 2024-02-09 14:33:18
ke hadapan
707 orang telah melayarinya

如何使用 Golang 获取我的 wifi IP 地址?

editor php Xiaoxin di sini untuk memperkenalkan cara menggunakan Golang untuk mendapatkan alamat IP wifi anda sendiri. Golang ialah bahasa pengaturcaraan yang cekap dan ringkas yang menyediakan banyak kaedah mudah untuk mengendalikan tugas berkaitan rangkaian. Untuk mendapatkan alamat IP wifi, kita boleh menggunakan pakej bersih Golang dan pakej os/exec untuk melaksanakan beberapa arahan sistem. Dengan beberapa kod mudah, kami boleh mendapatkan alamat IP wifi yang kami sambungkan. Mari kita lihat proses pelaksanaan khusus!

Isi soalan

func getLocalIP() ([]string, error) {
    addrs, err := net.InterfaceAddrs()
    if err != nil {
        return nil, err
    }
    IPs := make([]string, 0)
    for _, a := range addrs {
        if ipNet, ok := a.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
            if ipNet.IP.To4() != nil {
                IPs = append(IPs, ipNet.IP.To4().String())
            }
        }
    }
    return IPs, nil
}
func TestGetLocalIP() {
    addrs, _ := getLocalIP()
    for _, a := range addrs {
        fmt.Println(a)
    }
}
Salin selepas log masuk

Saya menggunakan ini tetapi ia memberi saya senarai alamat ip.

Saya hanya ingin mendapatkan alamat wifi tempatan saya, apakah yang perlu saya lakukan?

Penyelesaian

Anda perlu mengetahui sekurang-kurangnya satu daripada dua maklumat ini:

  1. Nama antara muka yang betul (biasanya en0 pada mac, contohnya, tetapi ymmv)
  2. Alamat rangkaian wayarles anda, termasuk panjang topeng - alamat seperti 192.168.0.0/16 atau 192.168.0.0/24 adalah perkara biasa, tetapi anda perlu memikirkan perkara ini lebih awal.

Jika anda hanya tahu nama antara muka:

ifs, _ := net.interfaces()
for _, ifi := range ifs {
  if ifi.name == "en0" { // or whatever other filter you want
    addrs, _ := ifi.addresses()
    for _, a := range addrs {
      // filter to get the one you want, typically unicast ip4
    }
  }
}
Salin selepas log masuk

Lebih mudah:

if, _ := net.interfacebyname("en0")
addrs, _ := if.addresses()
for _, a := range addrs {
  // as before, filter for the address you want
}
Salin selepas log masuk

Jika anda tahu alamat rangkaian rangkaian wayarles anda

// Loop over interfaces, get addrs, then loop over addresses and get IPs for those that have them
if ip.Mask(net.CIDRMask(16, 32)) == myNetworkAddress {
  // The interface you got this IP from is probably your wifi interface
}
Salin selepas log masuk

Kaedah yang mana satu untuk dipilih

Bergantung pada antara muka dengan nama tertentu biasanya tidak mudah alih. Jadi walaupun andaian saya ialah anda hanya mahu menjalankan ini di stesen kerja anda sendiri, jika ini adalah sesuatu yang perlu dijalankan merentasi berbilang hos, anda mungkin mahu sekurang-kurangnya bermula dengan memadankan alamat rangkaian yang betul. Terdapat helah lain - jika anda tahu dengan mengandaikan anda akan berjalan di ladang pelayan di mana setiap hos mempunyai nic dari pengeluar xxx, anda boleh mencari alamat mac dan melihat sama ada ia dari pengeluar itu - anda boleh mencuba ini di sini . Anda boleh menggunakan penapis lain juga, tetapi ini sesuai untuk kes penggunaan peribadi anda.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan alamat IP wifi saya menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!