When I was developing android, I encountered the problem of getting a wired IP address. Let's not talk about the code!
For (Enumeration <NetworkInterface> en = NetworkInterface
. GetNetworkInterfaces (); en. hasMoreElements ();){
NetworkInterface intf = en. nextElement ();
If (intf. getName (). toLowerCase (). equals ("eth0") | intf. getName (). toLowerCase (). equals ("wlan0 ")){
For (Enumeration <InetAddress> enumIpAddr = intf. getInetAddresses (); enumIpAddr. hasMoreElements ();){
InetAddress inetAddress = enumIpAddr. nextElement ();
If (! InetAddress. isLoopbackAddress ()){
Ipaddress = inetAddress. getHostAddress (). toString ();
If (! Ipaddress. contains (":") {// ipV6 address
Return ipaddress;
}
}
}
} Else {
Continue;
}
}
In red, only ip addresses that are wireless and wired are filtered. networkInterface has many names, such as sim0 and remt1....
In green, the ipv6 address is filtered out. whether wireless or wired, the address displayed here is: fe80: 288: 88ff: fe00: 1% eth0 fe80: ee17: 2fff: fece: c0b4 % wlan0 usually appears in the first loop. the second cycle is the actual ipv4 address.
From Adam Viki