Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2010, 21:59   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию UnicastIPAddressInformation определить IPv4 или IPv6

код простой. получаю все сетевые интерфейсы и те из них, у которых есть Unicast добавляю в комбо бох, но дело в том, что мне нужно добавить туда только IPv4

Код:
using System.Net.NetworkInformation;

[...]

NetworkInterface[] netints = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface netint in netints)
            {
                    IPInterfaceProperties tip = netint.GetIPProperties();
                    if (tip.UnicastAddresses.Count > 0 && tip.GatewayAddresses.Count > 0)
                    {
                      foreeach(UnicastIPAddressInformation x in tip.UnicastAddresses)
                       {
                        // вот тут и надо определить какой в x адрес, IPv4 или IPv6
                    comboBox1.Items.Add(netint.Name + " (IP: " + tip.UnicastAddresses[i].Address.ToString() + ", Шлюз: " + tip.GatewayAddresses[i].Address.ToString() + ")");
                        }
                    }
            }
буду благодарен за помощь.
Никки вне форума Ответить с цитированием
Старый 31.08.2010, 11:12   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Вот так все должно работать.
Код:
NetworkInterface[] netints = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface netint in netints)
            {
                    IPInterfaceProperties tip = netint.GetIPProperties();
                    if (tip.UnicastAddresses.Count > 0 && tip.GatewayAddresses.Count > 0)

                    {
                       
                      foreach(UnicastIPAddressInformation x in tip.UnicastAddresses)
                       {
                       
                          string myIpString = tip.UnicastAddresses[i].Address.ToString();
                          System.Net.IPAddress ipAddress = null;

                          bool isValidIp = System.Net.IPAddress.TryParse(myIpString, out ipAddress);
                          if(isValidIp && ipAddress.AddressFamily== System.Net.Sockets.AddressFamily.InterNetwork )

                             comboBox1.Items.Add(...);
                       
                        }
                    }
            }
Если AddressFamily.InterNetwork,то версия 4,если AddressFamily.InterNetworkV6 -версия 6.
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 31.08.2010 в 11:27.
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IPv4 Generator ergil Софт 1 19.07.2010 16:06
можно ли определить закрыта справка или нет? Станкевич Вадим Общие вопросы Delphi 3 24.06.2010 09:21
свойства tcp/ipv4 IRON PRIEST Операционные системы общие вопросы 10 18.09.2009 09:20
Как узнать когда был изменен (создан) интерфейс версии IPv6. Crazyman Работа с сетью в Delphi 0 15.12.2008 00:51
Функция определить цифра или нет. dx+ Общие вопросы Delphi 8 26.05.2008 10:59