Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MX-запись из DNS [D7]


Wistler ©   (2005-08-30 14:15:00) 

Доброго времени суток.

Необходимо получить MX-запись. Проблема в том, что не могу получить запрос на свой ответ. Код приведён ниже.

Var
 WSData:WSAData;
 S, RS:Integer;
 SockAddr, ToAddr, Local:sockaddr_in;
 Res:Integer;
 Request:String;
 Buf, RBuf:Array of Byte;
 I:Word;
 L:Integer;
begin
 WSAStartup(514, WSData);
 RS:=socket(AF_INET, SOCK_DGRAM, 0);
 Local.sin_family:=AF_INET;
 Local.sin_port:=htons(53);
 Local.sin_addr.S_addr:=htonl(INADDR_ANY);
 bind(RS, Local, SizeOf(Local));

 S:=socket(AF_INET, SOCK_DGRAM, 0);
 SockAddr.sin_family:=AF_INET;
 SockAddr.sin_port:=htons(53);
 SockAddr.sin_addr.S_addr:=htonl(INADDR_ANY);
 bind(S, SockAddr, SizeOf(SockAddr));
 SetLength(RBuf, 10000);

 ToAddr.sin_family:=AF_INET;
 ToAddr.sin_port:=htons(53);
 ToAddr.sin_addr.S_addr:=inet_addr('192.168.1.1');
 If connect(S, ToAddr, SizeOf(ToAddr))<>SOCKET_ERROR then
   begin
     Randomize;
     Request:=WordToTwoCharStr(Random(65536));
     Request:=Request+WordToTwoCharStr(0);
     Request:=Request+WordToTwoCharStr(1);
     Request:=Request+Chr(0)+Chr(0)+Chr(0)+Chr(0)+Chr(0)+Chr(0);
     Request:=Request+DoDomainName('mail.ru')+Chr(0);
     Request:=Request+WordToTwoCharStr(15);
     Request:=Request+WordToTwoCharStr(1);
     SetLength(Buf, Length(Request));
     For I:=1 to Length(Request) do
       Buf[I-1]:=Byte(Request[I]);
     Res:=send(S, Buf, Length(Buf), 0);
     If Res=SOCKET_ERROR then
       ShowMessage('Send Error');
   end
 else
   ShowMessage('Connect failed');
 closesocket(S);
 Res:=SOCKET_ERROR;
 While Res=SOCKET_ERROR do
   begin
     Res:=recv(RS, RBuf, Length(RBuf), 0);
     If Res<>SOCKET_ERROR then Break;
   end;
 ShowMessage('Recive');
 WSACleanup;


Wistler   (2005-08-30 14:51:00) [1]

Описался, конечно, не запрос на ответ, а ответ на запрос


Наверх

Титульная страница Поиск, карта сайта Написать письмо