How to get my wifi IP address using Golang?

WBOY
Release: 2024-02-09 14:33:18
forward
707 people have browsed it

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

php editor Xiaoxin is here to introduce how to use Golang to obtain your own wifi IP address. Golang is an efficient and concise programming language that provides many convenient methods to handle network-related tasks. To get the wifi IP address, we can use Golang's net package and os/exec package to execute some system commands. With some simple code, we can get the IP address of the wifi we are connected to. Let’s take a look at the specific implementation process!

Question content

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)
    }
}
Copy after login

I have used this but it gave me a list of ip addresses.

I just want to get my wifi local address, what should I do?

Solution

You need to know at least one of the two pieces of information:

  1. The name of the correct interface (usually en0 on mac, for example, but ymmv)
  2. Your wireless network address, including mask length - addresses like 192.168.0.0/16 or 192.168.0.0/24 are common, but you have to figure this out ahead of time.

If you only know the interface name:

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
    }
  }
}
Copy after login

simpler:

if, _ := net.interfacebyname("en0")
addrs, _ := if.addresses()
for _, a := range addrs {
  // as before, filter for the address you want
}
Copy after login

If you know the network address of the wireless network

// 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
}
Copy after login

Which method to choose

Relying on an interface with a specific name will generally not be portable. So while my assumption is that you just want to run this on your own workstation, if this is something that needs to run across multiple hosts, you'll probably want to at least start by matching the correct network address. There are other tricks - if you know assuming you will be running in a server farm where each host has a nic from manufacturer xxx, you can look up the mac address and see if it is from that manufacturer - you can try this here. You can use other filters as well, but these will be a good fit for your personal use case.

The above is the detailed content of How to get my wifi IP address using Golang?. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!