Potrzebuję uzyskać mój zewnętrzny (publiczny) adres IP z Delphi.Jak uzyskać zewnętrzny (publiczny) adres IP w Delphi
To samo IP, które pokazuje na przykład www.whatismyip.com.
Jak mogę to zrobić? Winsock na to nie pozwala.
Potrzebuję uzyskać mój zewnętrzny (publiczny) adres IP z Delphi.Jak uzyskać zewnętrzny (publiczny) adres IP w Delphi
To samo IP, które pokazuje na przykład www.whatismyip.com.
Jak mogę to zrobić? Winsock na to nie pozwala.
Nie sądzę, że możesz. Cóż, możesz zadzwonić do jakiejś usługi, która powie ci, jaki jest twój adres IP (np. http://www.whatismyip.com/) i dowiedzieć się o tym z odpowiedzi. Ale nie sądzę, aby cokolwiek na twoim komputerze było w stanie powiedzieć ci, jaki jest twój adres IP, do świata zewnętrznego.
Nietestowane, ale myślę, że można to zrobić z Indy:
MyPublicIP := IdHTTP1.Get('http://automation.whatismyip.com/n09230945.asp');
Proszę przeglądu zasad/polityki na stronie: http://www.whatismyip.com/faq/automation.asp przed użyciem tego produktu.
... Powodem jest to, że twój adres publiczny niekoniecznie jest dołączony do twojego komputera. Całkiem często jest przypisany do zewnętrznego routera, który jest zupełnie innym komputerem niż wszystkie efekty. –
Tak. Publiczny adres IP i adapter z domyślną bramą to dwie różne rzeczy. –
z pamięci, niesprawdzone:
function GetMyHostAddress: string;
var
http: IWinHttpRequest;
begin
http := CreateOleObject('WinHttp.WinHttpRequest5.1') as IWinHttpRequest;
http.Open('GET', 'http://automation.whatismyip.com/n09230945.asp', False);
http.Send(EmptyParam);
if http.StatusCode = 200 then
Result := http.ResponseText
else
Result := '';
end;
Można korzystać z tej strony: http://ipinfo.io/json. Zwraca informacje o bieżącym połączeniu internetowym w formacie JSON
.
W delphi musisz użyć IdHTTP
w ten sposób: IdHTTP1.Get('http://ipinfo.io/json')
i to zwróci ciąg znaków zawierający wszystkie dane. Można użyć JSON
tłumacza chcesz lub można użyć lkJSON
jak w poniższym przykładzie:
json := TlkJSON.ParseText(MainEstrutura.IdHTTP1.Get('http://ipinfo.io/json')) as TlkJSONobject;
str := json.Field['ip'].Value;
mam nadzieję pomóc.
Jeśli zamiast tego użyjesz 'http: // ipinfo.io/ip ', zwróci on tylko adres IP w postaci zwykłego tekstu bez zawijania go w JSON, który musi zostać przeanalizowany. –
Jako kod w tej odpowiedzi musisz użyć: 'http: // ipinfo.io/json', aby uzyskać wszystkie informacje na temat tego IP –
OP nie poprosił o wyszukanie wszystkich szczegółów dotyczących adresu IP, tylko by pobrać sam adres IP . Więc '/ json' jest przesadą, gdy wystarczy'/ip'. Jeśli przeczytasz dokumentację witryny, poszczególne pola mogą zostać odzyskane samodzielnie. –
działa to dla mnie:
uses JSON,IdHTTP;
function GetIP():String;
var LJsonObj : TJSONObject;
str:string;
http : TIdHttp;
begin
str:='';
http:=TIdHTTP.Create(nil);
try
str:=http.Get('http://ipinfo.io/json');
LJsonObj:= TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(str),0) as TJSONObject;
str := LJsonObj.Get('ip').JsonValue.Value;
LJsonObj.Free;
http.Free;
Except
end;
result:=str;
end;
Wolę korzystać z usług, które same zgłaszają IP jako zwykły tekst bez dodatkowego formatowania metadanych. Na przykład: 'function GetIP: String; zacznij od TIdHTTP.Create wypróbuj Wynik: = http.Get ("http://ipinfo.io/ip"); wreszcie Wolny; koniec; koniec; ' –
Function GetMyIP:string;
var
xmlhttp:olevariant;
s,p:integer;
temp:string;
begin
result:=emptystr;
xmlhttp:=CreateOleObject('Microsoft.XMLHTTP');
try
xmlhttp.open('GET', 'http://www.findipinfo.com/', false);
xmlhttp.SetRequestHeader('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3');
xmlhttp.send(null);
except
exit;
end;
if(xmlhttp.status = 200) then
temp:=trim(VarToStr(xmlhttp.responseText));
xmlhttp:=Unassigned;
s:=pos('Address Is:',temp);
if s>0 then
inc(s,11)
else
exit;
temp:=copy(temp,s,30);
s:=pos('<',temp);
if s=0 then exit
else
dec(s);
result:=trim(copy(temp,1,s));
end;
przez zewnętrzny adres IP, to znaczy dostępną internetowy adres IP? Czy masz na myśli lokalny adres sieciowy, który nie jest 127.0.0.1? – Tremmors
Adres internetowy, taki sam, który jest widoczny na stronie www.whatismyip.com – chubbyk
To pytanie pokazuje rzeczywiste adresy IP komputera; http://stackoverflow.com/questions/576538/delphi-how-to-get-all-local-ips –