GetHostEntry является очень медленным

Я не могу сказать вам, как я благодарен за Javadoc - это действительно просто настроить в комментариях. Так что это как минимум один смысл, в котором комментарии полезны.

8
задан gregmac 15 June 2009 в 16:26
поделиться

1 ответ

К сожалению, нет способа (о котором я знаю) изменить этот тайм-аут в Windows API на стороне клиента. Лучшее, что вы можете сделать, это отредактировать реестр, чтобы изменить продолжительность тайм-аутов в DNS-запросах. Подробнее см. в этой технической статье . Насколько мне известно, попытки 1, 2 и 3 выполняются, когда вы это делаете, отсюда и 5-секундная задержка.

Единственный другой вариант - использовать некоторую форму фоновой обработки, например эту асинхронную версию ] обратного поиска в DNS. Тем не менее, здесь будет использоваться многопоточность, поэтому вы в конечном итоге столкнетесь с тайм-аутами (так будет лучше, так как это будет во многих ожидающих потоках, но все же не идеально). Лично, если вы собираетесь обрабатывать огромное количество, я d смешайте оба подхода - выполните обратный поиск синхронно и измените реестр, чтобы сократить время ожидания.


Редактировать после комментариев:

Если вы посмотрите на флаги на getnameinfo , есть параметр flags . Я считаю, что вы можете использовать P / Invoke и установить флаги NI_NAMEREQD | NI_NUMERICHOST , чтобы получить желаемое поведение. (Первый говорит об ошибке немедленно, если нет записи DNS, что помогает сократить время ожидания - второй говорит, что нужно выполнить обратный поиск.)

5
ответ дан 5 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: