Jak rozwiązać adres z DNS?

0

Mam adres internetowy -> chcę IP tego adresu.

Tak przy okazji: jak w Delphi sprawdzić jaki mam adres, który otrzymałem dynamicznie (dial-up, neostrada, itd.)

0

Hej ;)

Akurat mam te kodziki w swoim niezbędniku
(oczywiście nie są moje sorki dla autora)

uses
WinSock, //...itd

//Funkcja która podaje adres IP na podstawie wpisanego DNSa...
FUNCTION  GetIP_z_DNS(DNSaddr:String):String;
 type pu_long = ^u_long;
var
 WSAData :TWSAData;
 HostEnt :PHostEnt;
 InAddr  :TInAddr;
Begin
 //wywołanie biblioteki WinSock...
 if WSAStartup($101, WSAData)<>0 then Result:='Wystąpił błąd...'
 else
 begin
   HostEnt:= GetHostByName(DNSaddr);
   InAddr.S_addr:= u_long(pu_long(HostEnt^.h_addr_list^)^);
   Result:= inet_ntoa(InAddr);
   WSACleanup;  //zwolnienie biblioteki WinSock
 end;
End;

// i odwrotnie...

//Funkcja pobierająca adres IP , oraz zwracająca nam Adres DNS
FUNCTION GetDNS_z_IP(IPaddr:String):String;
var
 WSAData    :TWSAData;
 SockAddrIn :TSockAddrIn;
 HostEnt    :PHostEnt;
Begin
 //wywołanie biblioteki WinSock...
 if WSAStartup($101, WSAData)<>0 then Result:='Wystąpił błąd...'
 else
 begin
   WSAStartup($101, WSAData); //wywołanie biblioteki WinSock
   SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPaddr));
   HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
   if HostEnt<>nil then result:=StrPas(Hostent^.h_name)
      else result:='';
   WSACleanup;  //zwolnienie biblioteki WinSock
 end;
End;

// i to dokładam :)

//Funkcja pobiera IP z nazwy sieciowej
FUNCTION GetIPAddress(NetworkName :TString) :TString;
var
 error   :DWORD;
 host    :PHostEnt;
 data    :TWSAData;
 address :In_Addr;
Begin
 error:= WSAStartup(MakeWord(1, 1), data);
 if error = 0 then
 begin
   host:= GetHostByName(PChar(NetworkName));
   error:= GetLastError();
   if error = 0 then
   begin
     address:= PInAddr(host^.h_addr_list^)^;
     Result:= Inet_ntoa(Address);
  end else begin
   Result:='Unknown';
  end;
 end else begin
  Result:='Error';
 end;
 WSACleanup();
End; 

Chyba starczy ;)

A mój problem :(
http://4programmers.net/Forum/viewtopic.php?id=52076

ehhh...

0

TString ? :-)

0

Cześć :)

haha nawet nie zauważyłem tego TString :)
Miałem pod ręką te kody i je tu wrzuciłem ..pisałem że nie są moje

  • zbieram czasami co ciekawego do mojego FAQ i nie zdąże tego
    sprawdzić stąd ta zmyła :)

poniżej poprawne pobranie IP :

//Pobranie adresu IP
FUNCTION TForm1.GetIP:String;
var
 WSAData :TWSAData;
 name    :array[0..MAX_PATH] of char;
 hostEnt :PHostEnt;
Begin
 Result:= '';
 if WSAStartup($0101, WSAData) = 0 then
    try
      GetHostName(@name, MAX_PATH);
      hostEnt:= GetHostByName(@name);
      Result:= Inet_ntoa(PInAddr(hostEnt^.h_addr_list^)^);
      finally
      WSACleanup; 
    end;
End; 

A co z moim problemikiem ? mógłbyś zerknąć Drajwerek ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1