Пример #1
0
        /// <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()));
        }
Пример #2
0
        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);
        }