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.)
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.)
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...
TString ? :-)
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
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 ;)