コード例 #1
0
 private void ShowIPAddressCollection(System.Net.IPAddressCollection collection)
 {
     for (int i = 0; i < collection.Count; i++)
     {
         Emit(collection[i].ToString(true));
     }
 }
コード例 #2
0
 public Enumerator(IPAddressCollection collection)
 {
     _collection = collection;
     _enumerator = -1;
 }
コード例 #3
0
 private void ShowIPAddresses(string label, System.Net.IPAddressCollection winsServers)
 {
     Emit("-----" + label + "-----");
     ShowIPAddressCollection(winsServers);
 }
コード例 #4
0
        private static IPAddress[] GetLocalAddresses()
        {
            IPAddress[] addressArray;
            if (!ComNetOS.IsPostWin2K)
            {
                ArrayList     list2        = new ArrayList(0x10);
                int           num5         = 0;
                SafeLocalFree pAdapterInfo = null;
                uint          pOutBufLen   = 0;
                uint          adaptersInfo = UnsafeNetInfoNativeMethods.GetAdaptersInfo(SafeLocalFree.Zero, ref pOutBufLen);
                while (adaptersInfo == 0x6f)
                {
                    try
                    {
                        pAdapterInfo = SafeLocalFree.LocalAlloc((int)pOutBufLen);
                        adaptersInfo = UnsafeNetInfoNativeMethods.GetAdaptersInfo(pAdapterInfo, ref pOutBufLen);
                        if (adaptersInfo == 0)
                        {
                            IpAdapterInfo info = (IpAdapterInfo)Marshal.PtrToStructure(pAdapterInfo.DangerousGetHandle(), typeof(IpAdapterInfo));
                            while (true)
                            {
                                IPAddressCollection addresss = info.ipAddressList.ToIPAddressCollection();
                                num5 += addresss.Count;
                                list2.Add(addresss);
                                if (info.Next == IntPtr.Zero)
                                {
                                    break;
                                }
                                info = (IpAdapterInfo)Marshal.PtrToStructure(info.Next, typeof(IpAdapterInfo));
                            }
                        }
                        continue;
                    }
                    finally
                    {
                        if (pAdapterInfo != null)
                        {
                            pAdapterInfo.Close();
                        }
                    }
                }
                if ((adaptersInfo != 0) && (adaptersInfo != 0xe8))
                {
                    throw new NetworkInformationException((int)adaptersInfo);
                }
                addressArray = new IPAddress[num5];
                uint num8 = 0;
                foreach (IPAddressCollection addresss2 in list2)
                {
                    foreach (IPAddress address in addresss2)
                    {
                        addressArray[num8++] = address;
                    }
                }
                return(addressArray);
            }
            ArrayList                 list             = new ArrayList(0x10);
            int                       num              = 0;
            SafeLocalFree             adapterAddresses = null;
            GetAdaptersAddressesFlags flags            = GetAdaptersAddressesFlags.SkipFriendlyName | GetAdaptersAddressesFlags.SkipDnsServer | GetAdaptersAddressesFlags.SkipMulticast | GetAdaptersAddressesFlags.SkipAnycast;
            uint                      outBufLen        = 0;
            uint                      num3             = UnsafeNetInfoNativeMethods.GetAdaptersAddresses(AddressFamily.Unspecified, (uint)flags, IntPtr.Zero, SafeLocalFree.Zero, ref outBufLen);

            while (num3 == 0x6f)
            {
                try
                {
                    adapterAddresses = SafeLocalFree.LocalAlloc((int)outBufLen);
                    num3             = UnsafeNetInfoNativeMethods.GetAdaptersAddresses(AddressFamily.Unspecified, (uint)flags, IntPtr.Zero, adapterAddresses, ref outBufLen);
                    if (num3 != 0)
                    {
                        continue;
                    }
                    IpAdapterAddresses addresses = (IpAdapterAddresses)Marshal.PtrToStructure(adapterAddresses.DangerousGetHandle(), typeof(IpAdapterAddresses));
Label_0075:
                    if (addresses.FirstUnicastAddress != IntPtr.Zero)
                    {
                        UnicastIPAddressInformationCollection informations = SystemUnicastIPAddressInformation.ToAddressInformationCollection(addresses.FirstUnicastAddress);
                        num += informations.Count;
                        list.Add(informations);
                    }
                    if (!(addresses.next == IntPtr.Zero))
                    {
                        addresses = (IpAdapterAddresses)Marshal.PtrToStructure(addresses.next, typeof(IpAdapterAddresses));
                        goto Label_0075;
                    }
                    continue;
                }
                finally
                {
                    if (adapterAddresses != null)
                    {
                        adapterAddresses.Close();
                    }
                    adapterAddresses = null;
                }
            }
            if ((num3 != 0) && (num3 != 0xe8))
            {
                throw new NetworkInformationException((int)num3);
            }
            addressArray = new IPAddress[num];
            uint num4 = 0;

            foreach (UnicastIPAddressInformationCollection informations2 in list)
            {
                foreach (IPAddressInformation information in informations2)
                {
                    addressArray[num4++] = information.Address;
                }
            }
            return(addressArray);
        }