Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2016, 14:20   #1
greenisius
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 67
По умолчанию IdDNSResolver

Добрый день. Стоит задача получить MX запись домена.
Есть очень хорошая статья:

http://www.vr-online.ru/content/delp...ns-zapisi-2391

Сделал тестовый пример, опираясь на нее.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  DNS, Domain: string;
  msg:TIdMessage;
  i: integer;
begin
  Domain := 'mail.ru';
  DNS := '8.8.8.8';
  IdDNSResolver1.QueryType := [qtMx];
  IdDNSResolver1.Resolve(Domain);

  with IdDNSResolver1.QueryResult do
  begin
  for i:=0 to Count-1 do
  if (Items[i] is TARecord) then
    Memo1.Lines.Add((Items[i] as TARecord).IPAddress)
  else if (Items[i] is TMXRecord) then
    Memo1.Lines.Add((Items[i] as TMXRecord).ExchangeServer)
  else if (Items[i] is TNSRecord) then
    Memo1.Lines.Add((Items[i] as TNSRecord).HostName)
  else if (Items[i] is TSOARecord) then
    Memo1.Lines.Add((Items[i] as TSoaRecord).Primary)
  end;
Ошибка : Socket Error # 10054. Connection reset by peer.

Что не так? Я верно понял, что DNS Google сбрасывает соединение?
greenisius вне форума Ответить с цитированием
Старый 17.05.2016, 14:31   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Добавьте таймаут в 10 секунд.
Код:
 idDNSResolver1.ReceiveTimeout:=10000;
Глупый инди не дождавшись ответа думает, что соединение разорвано.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 17.05.2016 в 14:36.
Pavia вне форума Ответить с цитированием
Старый 17.05.2016, 14:48   #3
greenisius
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Добавьте таймаут в 10 секунд.
В моей версии Indy нет такого свойства. Есть только:
Код:
  IdDNSResolver1.WaitingTime := 10000;
К сожалению, не помогло
greenisius вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdDnsResolver Как пользоваться? JasperCRT Работа с сетью в Delphi 2 23.03.2011 14:10