![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с получением списка ПК в локальной сети
IceBeerg © (2006-07-12 18:47:00)Как собственно получить список ПК работающих в локальной сети если через 5-10 минут после загрузки пропадает доступ к рабочей группе (никакие сервисы за это время не останавливаются, иногда доступ к группе есть и весь сеанс работы),
WNetOpenEnumсWNetEnumResourceв данном случае работаю не корректно.
В принципе можно получить имя и/или локальный адрес текущего ПКGetHostNameиGetHostByName(nil), но если у ПК 2е сетевые катры и следовательно 2а IP.
Как "победить" данную ситуацию?
IceBeerg (2006-07-13 14:00:00) [1]Это все конечно хорошо, но тупым перебором от 1 до 255 IP адресов с GetHostByAdr эта ж скока времени уйдет...
Может у кого еще какие идеи есть?
IceBeerg (2006-07-13 11:05:00) [2]Zeqfreed © (13.07.06 10:39) [7]
Вот спасибо, все просто и понятно, зарываюсь в код.
Zeqfreed (2006-07-13 10:39:00) [3]> [6] IceBeerg © (13.07.06 10:32)
Да вроде ничего сложного там нет. Тем более пример на МСДН есть :)
Вот тут — http://forum.winsov.ru/index.php?act=Print&client=printer&f=29&t=2618— можно найти импорт функции и объявления типов/констант. При беглом поиске полных заголовков под Delphi для Iphlpapi.dll я не нашел.
IceBeerg (2006-07-13 10:32:00) [4]Zeqfreed © (13.07.06 10:19) [5]
Ммм, дааа, буду разбитаться, спасибо, думал есть способ по проще.
Zeqfreed (2006-07-13 10:19:00) [5]> Как узнать IP привязанный к конкретной сетевухе?
GetAdaptersInfo
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getadaptersinfo.asp
IceBeerg (2006-07-13 10:18:00) [6]Дык конечно можно преребором и 2ю циферку адреса проверить... но время уйдет...
IceBeerg (2006-07-13 10:17:00) [7]Alien1769 © (13.07.06 10:14) [2]
Да, ошибся 192.168.2.1.
Пример НЕ реальный, ктож будет публиковать свой IP?
Alien1769 (2006-07-13 10:14:00) [8]
> А как быть если 2е сетевые карты и у одной адрес
192.168.1.12,
> а у другой 192.168.1.1?
Нет логики. Если комп работает на две сети, то скорее должно быть
192.168. 2.12
А дальше просто. Твои адреса это пример или реальные?
IceBeerg (2006-07-13 10:08:00) [9]Немного не дописал вчера идею. Можно получить адрес текущего ПК через
GetHostByName(nil)откусить последнее число и перебором получить список ПК. Например: 192.168.1.12 => 192.168.10. и далее в цикле
For CurIP:=1 to 255 do
Begin
HostEnt:=GetHostByAdr('192.168.10.'+IntToStr(CurIP);
ну и т.д.
А как быть если 2е сетевые карты и у одной адрес 192.168.1.12, а у другой 192.168.1.1?
Как узнать IP привязанный к конкретной сетевухе?