/// <summary> /// Convert Java InetAddress to .Net IPAddress. /// </summary> /// <param name="inetAddress">The InetAddress object.</param> /// <returns>The equivalent .Net IPAddress object.</returns> /// <exception cref="System.ArgumentException">Failed to parse InetAddress: ...</exception> public static System.Net.IPAddress ToIPAddress(this Java.Net.InetAddress inetAddress) { if (inetAddress == null) { return(null); } // Use get the bytes and create an IP address from that if (inetAddress.GetAddress() != null && inetAddress.GetAddress().Length > 0) { return(new System.Net.IPAddress(inetAddress.GetAddress())); } // Use the host name string which should be in the standard "1.2.3.4" format System.Net.IPAddress ipAddress; if (System.Net.IPAddress.TryParse(inetAddress.HostAddress, out ipAddress)) { return(ipAddress); } // In Android 7 (Nougat) both of the above return null for IPv4 addresses however ToString still appears to work // The IP address should be the bit following the slash string str = inetAddress.ToString().Split('/').LastOrDefault(); if (System.Net.IPAddress.TryParse(str, out ipAddress)) { return(ipAddress); } // Don't know what else to try throw new ArgumentException(string.Format("Failed to parse InetAddress: {0}", inetAddress.ToString())); }
public bool CBCMGWiFiConnected() { bool wc = false; bool gc = false; String WiFiIP = null; if (WiFiStatus() == NetworkState.ConnectedWifi) { wc = true; PlayWiFiConnected(); Java.Util.IEnumeration networkInterfaces = Java.Net.NetworkInterface.NetworkInterfaces; while (networkInterfaces.HasMoreElements) { Java.Net.NetworkInterface netInterface = (Java.Net.NetworkInterface)networkInterfaces.NextElement(); Java.Util.IEnumeration a = netInterface.InetAddresses; while (a.HasMoreElements) { Java.Net.InetAddress b = (Java.Net.InetAddress)a.NextElement(); String IP = b.GetAddress()[0] + "." + b.GetAddress()[1] + "." + b.GetAddress()[2] + "." + b.GetAddress()[3]; if (IP.StartsWith(IPRange, StringComparison.Ordinal)) { WiFiIP = IP; gc = true; PlayCBCMGWiFiConnected(); } } } } LOGMSG("IP " + WiFiIP + " WiFi connected: " + wc + " CBCMG connected: " + gc + " " + sd.GetEnabled() + ":" + WiFiConnectDateTime + " " + WiFiDisconnectWarning + ":" + WiFiDisconnectDateTime + " " + sd.GetMovingDateTime()); return(gc); }