Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.08.2016, 21:44
Pcrepair Pcrepair вне форума
Новичок
 
Регистрация: 20.01.2015
Сообщения: 52
Версия Delphi: Pascal
Репутация: 10
По умолчанию DNS сервер на ДЕЛФИ

Добрый день. компонент ИНДИ TIdDNSResolver позволяет получить ряд параметров сетевого узла в обмен на имя домена. но для именно ДНС-сервера этого недостаточно. нужно чтобы клиент (браузер) подключился к ДНС-серверу в локальной сети, переслал на него имя домена, получил назад ИП-адрес.

Вопрос только к знатокам : компонент TIdDNSResolver имеет в своем составе необходимые методы (если ДА то какие именно) для обмена данными с клиентом, или нужно что то свое писать на TIdTcpClient в качестве обвязки, а TIdDNSResolver может только разменять имя домена на возвращаемые параметры.

Если посмотреть, то всяких свойст и методов у компонента много но что оне все значат?
Ответить с цитированием
  #2  
Старый 22.08.2016, 21:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тебе нужен другой компонент - TIdDNSServer на вкладке Indy Servers (или как она там называется). Это как раз имплементация сервера. А TIdDNSResolver должен использоваться внутри для резолва имен, о которых твой сервер не знает.

Общая схема такая:
1. При старте твой сервер читает статическую таблицу (это те имена, которые ТЫ хочешь резолвить локально). Это таблица 1.
2. Делаее он инициализирует динамическую таблицу имен. Это таблица 2.
3. При получении запроса на резолв, сервер сначала просматривает таблицу 1. Если нашел там имя - выдал его.
4. Если на шаге 3 ничего не найдено, то сервер смотрит на таблицу 2. Если там нашел имя, то обновляет у этой записи время последнего обращения и возвращает результат.
5. Если опять ничего не найдено, то сервер через TIdDNSResolver пытается получить результат со внешнего сервера. Если получил, то заносит его в таблицу 2. Ну и возвращает результат в любом случае.
6. Отдельный поток проверяет все записи таблицы 2. Если к записи не обращались довольно длительное время (настройка, пусть это будет 4 часа), то она из таблицы 2 удаляется. Если общий возраст записи больше другого определенного времени (настройка, пусть будет 12 часов), то запись обновляетя (заного запрашивается адрес - это нужно для поддержания актуальности).
Ответить с цитированием
  #3  
Старый 23.08.2016, 15:10
Pcrepair Pcrepair вне форума
Новичок
 
Регистрация: 20.01.2015
Сообщения: 52
Версия Delphi: Pascal
Репутация: 10
По умолчанию

Спасибо, действительно TIdDNSServer в ИНДИ10 есть
вот только нет ДЕМО
ну ладно
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter