private void TestPort(object o)
        {
            if (o != null)
            {
                var info = (TestInfo)o;

                bool open = Network_Functions.IsPortOpen(info.Address, info.Port, pingTimeout);

                if (!stop.WaitOne(0, true))
                {
                    if (open)
                    {
                        TestProbe(info.Address, info.Port);
                    }
                    else
                    {
                        AddtoLog(LogType.PORT, "Port Closed :: " + info.Port);
                    }
                }

                Dispatcher.BeginInvoke(new Action(() =>
                {
                    nodesChecked++;

                    SearchProgressValue++;

                    if (nodesChecked >= NetworkNodesFound * (portRangeStop - portRangeStart))
                    {
                        DevicesLoading = false;
                    }
                }), System.Windows.Threading.DispatcherPriority.Background, new object[] { });
            }
        }
        private void SetDefaultAddressRange()
        {
            var hostIp     = Network_Functions.GetHostIP();
            var hostSubnet = Network_Functions.GetSubnetMask(hostIp);

            if (hostIp != null && hostSubnet != null)
            {
                var ipNetwork = IPNetwork.Parse(hostIp, hostSubnet);
                if (ipNetwork != null)
                {
                    var ips = IPNetwork.ListIPAddress(ipNetwork).ToList();
                    if (ips != null && ips.Count > 0)
                    {
                        StartAddress = ips[0].ToString();
                        EndAddress   = ips[ips.Count - 1].ToString();
                    }
                }
            }
        }
        private IPAddress[] GetAddressRange()
        {
            var hostIp     = Network_Functions.GetHostIP();
            var hostSubnet = Network_Functions.GetSubnetMask(hostIp);

            if (hostIp != null && hostSubnet != null)
            {
                var ipNetwork = IPNetwork.Parse(hostIp, hostSubnet);
                if (ipNetwork != null)
                {
                    var ips = IPNetwork.ListIPAddress(ipNetwork).ToList();
                    if (ips != null && ips.Count > 0)
                    {
                        // Get Start Address
                        IPAddress start = null;
                        IPAddress.TryParse(StartAddress, out start);

                        // Get End Address
                        IPAddress end = null;
                        IPAddress.TryParse(EndAddress, out end);

                        if (start != null && end != null)
                        {
                            var range = new Network_Functions.IPAddressRange(start, end);
                            addressRange = ips.FindAll(o => range.IsInRange(o));

                            // Set HostIp to LocalHost instead of using network IP
                            int localhostIndex = addressRange.FindIndex(o => o.ToString() == hostIp.ToString());
                            if (localhostIndex >= 0)
                            {
                                addressRange[localhostIndex] = IPAddress.Loopback;
                            }

                            return(addressRange.ToArray());
                        }
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
 public static string Get()
 {
     return(Network_Functions.GetMacAddress());
 }
        public void FindDevices()
        {
            DevicesLoading      = true;
            DevicesAlreadyAdded = 0;
            DevicesNotAdded     = 0;
            NetworkNodesFound   = 0;
            nodesChecked        = 0;
            DeviceInfos.Clear();
            addressRange = null;
            LogItems.Clear();

            pingTimeout = PingTimeout;

            var hostIp     = Network_Functions.GetHostIP();
            var hostSubnet = Network_Functions.GetSubnetMask(hostIp);

            if (hostIp != null && hostSubnet != null)
            {
                var ipNetwork = IPNetwork.Parse(hostIp, hostSubnet);
                if (ipNetwork != null)
                {
                    var ips = IPNetwork.ListIPAddress(ipNetwork).ToList();
                    if (ips != null && ips.Count > 0)
                    {
                        // Get Start Address
                        IPAddress start = null;
                        IPAddress.TryParse(StartAddress, out start);

                        // Get End Address
                        IPAddress end = null;
                        IPAddress.TryParse(EndAddress, out end);

                        if (start != null && end != null)
                        {
                            AddtoLog(LogType.INFO, "Starting Auto Detect..");
                            AddtoLog(LogType.INFO, "IP Address Range : From " + start.ToString() + " to " + end.ToString());
                            AddtoLog(LogType.INFO, "Port Range : From " + portRangeStart.ToString() + " to " + portRangeStop.ToString());

                            var range = new Network_Functions.IPAddressRange(start, end);

                            addressRange = ips.FindAll(o => range.IsInRange(o));

                            int localhostIndex = addressRange.FindIndex(o => o.ToString() == hostIp.ToString());
                            if (localhostIndex >= 0)
                            {
                                addressRange[localhostIndex] = IPAddress.Loopback;
                            }
                        }
                    }
                }
            }

            portRangeStart = StartPort;
            portRangeStop  = EndPort;

            SearchProgressValue   = 0;
            SearchProgressMaximum = 0;

            stop = new ManualResetEvent(false);

            ThreadPool.QueueUserWorkItem(new WaitCallback(FindDevices_Worker));
        }