![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Описался, конечно, не запрос на ответ, а ответ на запрос