コード例 #1
0
        private List <string> ConfigureIpList(DicomNetIpTypeFlags ipType)
        {
            IPAddress[]   addresses               = Dns.GetHostAddresses(Dns.GetHostName());
            List <string> addressesStringList     = new List <string>();
            List <string> addressesIpv4StringList = new List <string>();
            List <string> addressesIpv6StringList = new List <string>();


            foreach (IPAddress address in addresses)
            {
                if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    addressesIpv4StringList.Add(address.ToString());
                }
                else if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
                {
                    addressesIpv6StringList.Add(address.ToString());
                }
            }

            View.CanIpV6CheckBox   = addressesIpv6StringList.Count > 0;
            View.CanIpBothCheckBox = DemosGlobal.IsOnVistaOrLater && View.CanIpV6CheckBox;

            switch (ipType)
            {
            case DicomNetIpTypeFlags.Ipv4:
                // nothing
                break;

            case DicomNetIpTypeFlags.Ipv6:
                if (!View.CanIpV6CheckBox)
                {
                    ipType = DicomNetIpTypeFlags.Ipv4;
                }
                break;

            case DicomNetIpTypeFlags.Ipv4OrIpv6:
                if (!View.CanIpBothCheckBox)
                {
                    ipType = DicomNetIpTypeFlags.Ipv4;
                }
                break;
            }

            addressesStringList.Clear();
            addressesStringList.Add("All");

            if ((ipType & DicomNetIpTypeFlags.Ipv4) == DicomNetIpTypeFlags.Ipv4)
            {
                foreach (string s in addressesIpv4StringList)
                {
                    if (s != "0.0.0.0")
                    {
                        addressesStringList.Add(s);
                    }
                }
            }

            if ((ipType & DicomNetIpTypeFlags.Ipv6) == DicomNetIpTypeFlags.Ipv6)
            {
                foreach (string s in addressesIpv6StringList)
                {
                    {
                        addressesStringList.Add(s);
                    }
                }
            }
            View.SetIpAddressList(addressesStringList.ToArray());
            View.IpType = ipType;
            return(addressesStringList);
        }