Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Демо сканирования сети, нужна помощь с тестированием...   Найти похожие ветки 

 
Rouse_ ©   (2004-10-13 20:29) [0]

Если кому не трудно, протестируйте пожалуйста программку...
http://rouse.front.ru/1.rar (качалками не качается, придется через браузер). 18 Кб.
Там исходники.
Программа сканирует сеть на наличие ресурсов (NetShareEnum) создавая поток на каждый адрес из диапазона адресов (необходима ОС из линейки NT) ...

Мне не понравилось как она повела себя на рабочем компьютере, а именно времени на создание потоков (255) было затрачено около 8 секунд...
Ерунда какаято...
На домашнем все в ажуре работает...

Особенно интересны результаты тестирования в доменной сети...

Зарание спасибо...


 
DVM ©   (2004-10-13 20:59) [1]

Работает в домене. Но при попытке вписать адреса от 192.168.0.200 до 192.168.0.1 вылетело исключение, что-то там с диапазоном прогрессбара.
Работает и под юзером и под админом.


 
Rouse_ ©   (2004-10-13 21:03) [2]

Интересует временный промежуток с нажатия кнопки до начала появления полоски в прогресбаре...

Диапазон (так как демо) по умолчанию должен различаться только последним байтом. т.е. первые 3 байта должны быть одинаковы...
к примеру
1.2.3.Х
и
1.2.3.Y


 
Rouse_ ©   (2004-10-13 21:06) [3]

А, ну и естьественно, различаться по возрастающей ;)


 
DVM ©   (2004-10-13 21:09) [4]


> Интересует временный промежуток с нажатия кнопки до начала
> появления полоски в прогресбаре...

от 0 до 1 сек. Очень быстро.
Все сканирование на 50 машин заняло секунд 15-20.


 
Adder ©   (2004-10-13 21:09) [5]

Интересует временный промежуток с нажатия кнопки до начала появления полоски в прогресбаре...
Практически сразу (меньше секунды). В домене.


 
Rouse_ ©   (2004-10-13 21:21) [6]

Странно, очень странно, я думал что что-то не так, но тогда объясните мне плз, в чем может быть проблема в следующем коде: ?

   for I := AFrom to ATo do
     with TScanThread.Create(False) do
     begin
       IP := inet_addr(PChar(Prefix + IntToStr(I)));
       FreeOnTerminate := True;
       Resume;
     end;


Я сегодня замерял через GetTickTime диапазон запуска потока (при данных по умолчанию) распределяется примерно так:
первые 5 потоков одновременно
вторые 6 - 7 через 15-20 м.сек
остальные с промежутком в 10-150 мсек...

Очень странно...
Просто это одна из последних заготовок к статье и не хотелось бы делать ошибки...


 
Rouse_ ©   (2004-10-13 21:22) [7]

Замерял в смысле на проблемной машине, где все сканирование начинается через сек 8 - 10 после нажатия кнопки...


 
jack128 ©   (2004-10-13 21:23) [8]

у меня бобик сдох. Завис вчистую. Надеюсь, то что я закоментировал

procedure TScanThread.Execute;
begin
//  inherited;
 Synchronize(IncCount);
 Scan;
 Synchronize(DecCount);
end; не очень повлияло на результат? ;-)


 
Jel ©   (2004-10-13 21:24) [9]

Сканирование начинает практически сразу. Без домена. Нашла только мой компьютер. Остальные не увидела. В сетевом окружении остальные видны.


 
jack128 ©   (2004-10-13 21:24) [10]

Rouse_ ©   (13.10.04 21:21) [6]
в этом коде проблемы точно нет. он сам по себе выполняется на 60мсек.


 
Rouse_ ©   (2004-10-13 21:29) [11]

> [9] Jel ©   (13.10.04 21:24)
Подсети отсутствуют? По идее должна была найти (если адреса компьютеров попадают в веденный диапазон) ...

> [8] jack128 ©   (13.10.04 21:23)
За что код поганишь, вертай как было...
Зависнуть не должно, видимол ты просто не дождался результатов отработки всех потоков


 
Rouse_ ©   (2004-10-13 21:33) [12]

Вот кстати, мне тут подсказали...
Если кто в домене, нельзя ли проверить следующую ситуацию...
Не осуществлять вход в домен а осуществить вход на локальный компьютер и запустить эту программу, я именно в таком варианте тестировал...
(Если, конечно, не сильно затруднит, потому что судя по отзывам в асе, в одноранговой сетке вообще проблем нет...)


 
Jel ©   (2004-10-13 21:36) [13]


> Rouse_ ©   (13.10.04 21:29) [11]

Одна сеть с маской 240. Занят весь диапазон адресов. Нашел только меня. Файрвол на время запуска отключал.


 
Rouse_ ©   (2004-10-13 21:37) [14]

> Одна сеть с маской 240.
255.255.255.240?
Это конечно не мое дело, но зачем такая маска?


 
Rouse_ ©   (2004-10-13 21:39) [15]

> 13] Jel ©   (13.10.04 21:36)
Кстати, сенькс за подсказку, надо бы и маску учитывать...


 
Verg ©   (2004-10-13 21:42) [16]


> 255.255.255.240?
> Это конечно не мое дело, но зачем такая маска?


А в чем проблема? Маска - как маска. Подсеть из 14 хостов. А что?


 
Rouse_ ©   (2004-10-13 21:44) [17]

> [16] Verg ©   (13.10.04 21:42)
Да ничего, конечно, странно просто видеть такую маску в одноранговой сети...


 
jack128 ©   (2004-10-13 21:54) [18]

Rouse_ ©   (13.10.04 21:29) [11]
За что код поганишь, вертай как было... Ну-ну. Тогда я точно нечего не дождусь. ;-) Потоку будут рубиться на ображении к абстрактному методу TThread.Execute.  Еще я подправил if Addr = Integer(INADDR_NONE) then Exit; без преобразования дельфя говорит, что условие всегда даст False. А программа таки виснет(пара минут - я считаю это виснет, особенно учитывая, что используются потоки). Почему - не знаю, но факт на экране..


 
Jel ©   (2004-10-13 21:57) [19]


> Rouse_ ©   (13.10.04 21:37) [14]

Этот диапазон выделен "свыше" :) А за циской растет довольно крупная WAN.


 
Verg ©   (2004-10-13 21:58) [20]

Погоди, но у тебя п.б. начнет двигатся с места только когда потоки начнут завершаться? т.е. если они по каким-либо причинам надолго "повисают" в сканировании, то все это время п.б. будет молчать. Так?


 
Rouse_ ©   (2004-10-13 22:00) [21]

> [18] jack128 ©   (13.10.04 21:54)
Ок, у тебя какая версия Дельфи?
Просто знакомо
> без преобразования дельфя говорит, что условие всегда даст False


 
Verg ©   (2004-10-13 22:01) [22]


> [17] Rouse_ ©   (13.10.04 21:44)
> > [16] Verg ©   (13.10.04 21:42)
> Да ничего, конечно, странно просто видеть такую маску в
> одноранговой сети...


Ничего странного не вижу. Даже наоборот. Ну вот столько выделено на маршрутизаторе в этот сегмент. Ничего особенного - ситуация обныкновеннейшая.


 
Rouse_ ©   (2004-10-13 22:03) [23]

> [20] Verg ©   (13.10.04 21:58)
Тут ключевое "когда потоки начнут завершаться"
Да именно так, проблема в том что у меня на проблемной машине первый поток начинает отрабатывать только после того как создан и запущен самый последний, а на запуск всех потоков уходит около 8 секунд при этом приложение конкретно виснет...
На домашеней машине все работает как и задумано...


 
Rouse_ ©   (2004-10-13 22:04) [24]

> Ничего особенного - ситуация обныкновеннейшая
Даже не спорю, просто не имел дел (и в практике ее не наблюдал) с одноранговой с несколькими сегментами...


 
jack128 ©   (2004-10-13 22:05) [25]

Rouse_ ©   (13.10.04 22:00) [21]
Д5. За 10 минут прога так и не отвисла...К черту её.


 
Rouse_ ©   (2004-10-13 22:08) [26]

> [25] jack128 ©   (13.10.04 22:05)
Стукни завтра в асю плз...

> [20] Verg ©   (13.10.04 21:58)
Поправлюсь, ПБ начинает двигаться с момента завершения любого из потоков...


 
Verg ©   (2004-10-13 22:10) [27]


> [23] Rouse_ ©   (13.10.04 22:03)
> > [20] Verg ©   (13.10.04 21:58)
> Тут ключевое "когда потоки начнут завершаться"
> Да именно так, проблема в том что у меня на проблемной машине
> первый поток начинает отрабатывать только после того как
> создан и запущен самый последний, а на запуск всех потоков
> уходит около 8 секунд при этом приложение конкретно виснет...
> На домашеней машине все работает как и задумано...


А как задумано-то? Если каждый поток подолгу висит по причинам - ну, например,
1. нет у меня такой подсети вообще (192.168....)
2. выключен NBT (NetBIOS Over TCP/IP)
3. NetBEUI вообще отсутствует как класс


 
panov ©   (2004-10-13 22:10) [28]

>Rouse_ ©

Смотря как настроена маршрутизация.
В зависимости от настроек сети сканирование может идти и по 15 минут...


 
Rouse_ ©   (2004-10-13 22:14) [29]

> А как задумано-то?
Да задумка простейшая...
Берем диапазон IP и на каждый запускаем поток который должен:
1. Увеличить счетчик потоков через Synhronize
2. Из IP получить имя машины
3. Выполнить NetShareEnum на указанное имя
3. через Synhronize вывести результат
4. через Synhronize уменьшить счетчик потоков

прогресс начинает двигаться при уменьшении счетчика потоков...


 
Rouse_ ©   (2004-10-13 22:16) [30]

> [27] Verg ©   (13.10.04 22:10)
Да, по всем этим причинав сканирование вообще не выполнится, но выполняется ж зараза (только иногда медлено ;)


 
Verg ©   (2004-10-13 22:31) [31]


> > [27] Verg ©   (13.10.04 22:10)
> Да, по всем этим причинав сканирование вообще не выполнится,
> но выполняется ж зараза (только иногда медлен


И вот еще: DNS сервер настроен и настроен правильно на DNS провайдера, находящегося, правда, за 5 хопов от моего компа.

function TScanThread.GetCompName(const Addr: Integer): String;

Будет тормрозить обязательно! - раз идет WsaSTARTUP/Clenaup(это на каждый вызов процедуры) и синхронные запросы к DNS про адрес, которые тот и знать ничего не знает.
По сути ты эти 8 секунд наблюдаешь - это сетевое ядро долбится к DNS-у, а тот либо "далеко", либо канал до него узкий, либо он не работает.

Так я не понял - в чем проблема, тогда. В том, что медленно или, что вообще не выполняется?


 
Rouse_ ©   (2004-10-13 22:32) [32]

> В зависимости от настроек сети сканирование может идти и
> по 15 минут...

Ужас, Сань вы это там что, над Юзерами прикалываетесь чтоль, чисто по админски (с такими настройками)? ;))


 
Rouse_ ©   (2004-10-13 22:35) [33]

> Будет тормрозить обязательно
Согласен, но это обычные тормоза и они абсолютно нормально укладываются в примерно 15-100 мсек (в течение работы всей программы в сумме)...
А проблема именно в том, что вот этот код:

  for I := AFrom to ATo do
    with TScanThread.Create(False) do
    begin
      IP := inet_addr(PChar(Prefix + IntToStr(I)));
      FreeOnTerminate := True;
      Resume;
    end;

на моей машине рабочей (не домашней) обрабатывает 8 секунд...
в то время как на домашней не более 15 мсек...

Вот и пытаюсь найти проблему...


 
Torry ©   (2004-10-13 22:36) [34]

To Rouse_

Надо реально помочь? Подсказками мало можно, давай тебе наш PSSDK подгоню... Надо: Имя, фамилию, компанию, e-mail на кого регистрировать.


 
Rouse_ ©   (2004-10-13 22:37) [35]

Заметь - это код выполняющийся в основном потоке. Т.е. он тормозить вообще не должен, запустил потоки и ждет...


 
Rouse_ ©   (2004-10-13 22:38) [36]

> [34] Torry ©   (13.10.04 22:36)
Спасибо Максим, завтра свяжусь :)


 
Verg ©   (2004-10-13 22:43) [37]


> Согласен, но это обычные тормоза и они абсолютно нормально
> укладываются в примерно 15-100 мсек


Ты не понял - если про этот адрес DNS ничего не знает, то разрешение его имени ядро будет добиваться у DNS-а секунды.
Попробуй tracert на заранее "безымянный" комп по его Ip-шнику: секунды 4 пытается добиться его имени...


>  for I := AFrom to ATo do
>     with TScanThread.Create(False) do
>     begin
>       IP := inet_addr(PChar(Prefix + IntToStr(I)));
>       FreeOnTerminate := True;
>       Resume;
>     end;
>
> на моей машине рабочей (не домашней) обрабатывает 8 секунд...
> в то время как на домашней не более 15 мсек...


Так что же, ты CreateSuspended = false создаешь, а потом полям этого j,]trnf-потока чт-то начинаешь присваивать (тот-то уже "помчался", уже в полете, так сказать), да еще и Resume ему - кнтрольный выстрел что ли? :))))


 
Verg ©   (2004-10-13 22:58) [38]

Всякие ProcessMessages надо тоже убрать, на мой взнляд - они тоже тормозят (держат synchronize у потоков) при том совершенно бесполезны.


 
jack128 ©   (2004-10-14 01:52) [39]

Если внемлишь советам Verg"a то все заработает. Проверено мной(с) :-)


 
Vlad Oshin ©   (2004-10-14 09:08) [40]

сеть с доменом (2 домена, блин.. )
нашла 31 машинку, ну утро еще, пока чаи гоняют, видать

Сканирует рывками. Сразу находит 30% (1-2 сек), потом еще 30-40%(2-3 сек), и окончательно еще ~2 сек



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.039 c
14-1098755050
Думкин
2004-10-26 05:44
2004.11.14
С днем рождения! 26 октября.


6-1091738810
MeMO
2004-08-06 00:46
2004.11.14
Вопрос по статье "Мониторинг сетей в Delphi"


1-1099075284
BlackLord2003
2004-10-29 22:41
2004.11.14
TBX


1-1099228145
buSel
2004-10-31 16:09
2004.11.14
Взаимодействие между формами


10-1031254876
iZEN
2002-09-05 23:41
2004.11.14
CORBA умирает?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский