![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| wesadex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Есть функция:
как видно она "делает" стринговый IP из имени хоста. Вопрос: как сделать так, чтобы это "чудо техники" заработало пошустрее, а то один-два хоста она отрабатывает быстро, а когда кол-во обработок достигает 500-700 - это великие тормоза даже на выделенке. Может стоит использовать какие-либо другие методы или принципы работы... к сожалению в этом не сильно силен, если кто знает - подскажите хотя бы где рыть землю... Спасибо заранее! |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 10 Всего: 115 |
Никак, тут скорость зависит от функции gethostbyname встроенной в модуль Winsock. Такчто, скорость тут максимальная. Если у тебя много хостов, что тебе мешает обрабатывать их тойже функцией но в несколько потоков. |
|||
|
||||
| wesadex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Да в общем-то ничего, кроме одной маленькой, но неприятной фичи... когда число запросов выросло до 800-1500 в секунду родной ДНС улегся, таким же образом чуть не положил ДНСы провайдера... а так все Окей! Выход я вижу только в кэшировании запросов, но и тут облом... список хостов ОЧЕНЬ разнообразен, т.е. повторяется там только Тындекс и местный сайт, да при том это все еще и на лету надо делать...
|
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 10 Всего: 115 |
Это очень жестко, я себе позволилбы максимум 20. |
|||
|
||||
| jonimimoni |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
Похожий вопрос. Функцию взял в ДКРБ:
Список из 20 IP, пытаюсь получить имена хостов. Хосты под виндой и линухом возвращают имена очень резво, а вот есть програмируемые свичи с IP, которые имён не имеют. В них то и загвоздка, программа зависает на 2-3 минуты. Как видно из кода сообщение об ошибке я отключил (закоментировал), выводилось 'Can not get host information.', но это не выход, время на опрос слишком большое. В связи с этим вопрос: Как сократить время опроса хостов без имени? Как сюда придумать параметр с таймаутом? Или если он тут есть - пролейте свет... |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Запускаешь поток-сканер и поток-ревизор. Если поток-сканер не завершается... ну... секунд 5 (следишь за временем в ревезоре), то потоком-ревизором завершаешь его и запускаешь сканирование другог хоста. Я бы так сделал.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| jonimimoni |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
Я не сомневаюсь в справедливости такого метода, но я самостоятельно такого не осилю. Моих знаний хватает на красивое расставление компонент на форме да склеивания кусков кода написанных другими. Хотелось бы увидеть код, в котором реализован этот метод. ЗЫ: Извиняюсь за дерзость, но с сетью "играюсь" впервые... |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 2 Всего: 50 |
Собственно, если хочешь научится чему-то большему - делай сам. А мы подскажем и исправим.
|
|||
|
||||
| jonimimoni |
|
||||||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 28.9.2007 Репутация: нет Всего: нет |
Я хочу, но знаний для этого маловато... С потоками вообще незнаком и незнаю ка реализовать. Вот код процедуры, где происходит проверка\получение имени:
Как я понимаю строчка
и образует тот самый поток, но как организовать в два или более потока, и как самое главное их склонить к взаимодействию - это за пределами моих познаний. |
||||||
|
|||||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
О потоках нам все разжувал Петрович. За что ему и спасибо. Читаем
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |