Beispiel #1
0
        public static string LocalIpInfos()
        {
            StringBuilder sbuilder   = new StringBuilder();
            var           localInfos = LocalNetDevice.RefreshNetInfos();

            foreach (var localInfo in localInfos)
            {
                sbuilder.Append($" {localInfo.DeviceName}({localInfo.Ip}) ");
            }

            return(sbuilder.ToString());
        }
Beispiel #2
0
        public static DiagnosisResult DiagnosisIpAddress(string ipAddress)
        {
            var localInfos = LocalNetDevice.RefreshNetInfos();
            List <NetAddressInfo> findAddress = null;

            if (localInfos.Count(o => o.GateWay.IsValid()) > 1)
            {
                try
                {
                    if (IPAddress.TryParse(ipAddress, out IPAddress target))
                    {
                        using (var tracert = new NetDiagnosis(target, maxHops: 5))
                        {
                            tracert.Tracert();
                            tracert.Waite();
                            var defaultNode = tracert.RouteNode;
                            if (defaultNode.Address.ToString() != "0.0.0.0" && defaultNode.Address.ToString() != LocalHost)
                            {
                                findAddress = localInfos.Where(o =>
                                                               o.AddressFamily == defaultNode.Address.AddressFamily &&
                                                               (defaultNode.Address.ToString() == o.GateWay && tracert.InSameVLan(o.Ip))).ToList();
                                if (findAddress.IsInvalid())
                                {
                                    findAddress = localInfos.Where(o =>
                                                                   o.AddressFamily == defaultNode.Address.AddressFamily &&
                                                                   tracert.InSameVLan(o.Ip))
                                                  .ToList();
                                }
                            }
                        }
                    }
                }
                catch
                {
                }
            }

            if (findAddress.IsInvalid())
            {
                var ips = localInfos.Where(o => o.GateWay != null).ToList();
                if (ips.IsInvalid())
                {
                    ips = new List <NetAddressInfo>()
                    {
                        localInfos.FirstOrDefault()
                    };
                }
                findAddress = ips;
            }

            return(new DiagnosisResult(findAddress.ToList(), findAddress.FirstOrDefault()));
        }
Beispiel #3
0
 public static List <NetAddressInfo> GetLocalNetInfos()
 {
     return(LocalNetDevice.RefreshNetInfos());
 }