|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
В VB6 делал так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
В .Net вроде нарыл вот это: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Но меня несколько смущает то, что API-код возвращает 127.0.0.0 (LoopBack) среди прочих, а приведенный .Net-код Loopback не возвращает (если закомментировать Sockets.AddressFamily.InterNetwork) Хотя для своих целей я этот 127.0.0.0 все равно выкидываю из Table. Т.е. это тоже самое или не совсем? В проге надо иметь возможность выбрать "сетевой интерфейс" из нескольких. Есть вот еще: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Причем этот код более похож на API-код: Т.е. на моем компе GetIpAddrTable дает: 192.168.11.2 127.0.0.1 А нижний .Net дает : IPv4 interface information for d. Контроллер семейства Realtek PCIe GBE Software Loopback Interface 1 Т.е похоже на правду Только вот не понимаю как нижним .Net-кодом получить IP-адреса. API-вариант честно переписывать на .Net неохота, но хотелось бы уверенности что гарантированно получаю тот же результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 08:14 |
|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
Дмитрий77В .Net вроде нарыл вот это: оно кривое, ибо завязано на DNS прямой путь - NetworkInterface.GetAllNetworkInterfaces() далее GetIPProperties().UnicastAddresses (убедившись что интерфейс поддерживает IP -Supports(NetworkInterfaceComponent.IPv4)) ну и V4 и V6 конечно отработать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 08:35 |
|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
Изопропил, Так красиво? Ничего не упустил? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я выкинул вот эту проверку Код: vbnet 1. 2. 3. 4.
Я так понимаю она автоматически происходит и если =0 то в For Each uni эти uni отсутствуют, ну и Dim-ы здесь не обязательны InterNetwork==IPv4 Я прав или нет (по синтаксису кода)? adapter.GetIPProperties().UnicastAddresses Результат совпадает с GetIpAddrTable: 192.168.11.2 127.0.0.1 Просто компов с 2-мя сетевыми картами + Wi-Fi чтоб еще напрямую IP-шники получал не осталось. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 08:57 |
|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
А, да, еще я выкинул adapter.Supports(NetworkInterfaceComponent.IPv4), наверно зря, перебор лишнего идет. Тогда вот так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 09:18 |
|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
проверку на Supports(NetworkInterfaceComponent.IPv4) зря опустил, попаадаются сетевые интерфейсы и без IP а для отладки - подними туннель и посмотри что получается ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 09:21 |
|
Получить список сетевых интерфейсов (IPv4 IP-адресов)
|
|||
---|---|---|---|
#18+
Изопропилпроверку на Supports(NetworkInterfaceComponent.IPv4) зря опустил, Да понял я. Если убрать внутренний if, то буде больше строк, если убрать еще внешний, то еще больше. Я думаю крайний вариант кода в самый раз. Да и без проверки рабочий, просто перебираем лишнее - где заведомо отсутствует искомое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2014, 09:28 |
|
|
start [/forum/topic.php?fid=20&msg=38788853&tid=1402308]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
139ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 336ms |
total: | 570ms |
0 / 0 |