Programowanie w języku Delphi » FAQ

Jak odczytać zewnętrzny adres IP

  • 2007-01-16 10:59
  • 10 komentarzy
  • 1573 odsłony
  • Oceń ten tekst jako pierwszy
Witam!


W tym artykule dowiemy się, jak pobrać zewnętrzny adres IP komputera, na którym uruchomiono program.
Znalazłem fajną stronę, która nam to ułatwi: http://www.whatismyip.org - nie ma tutaj niepotrzebnego tekstu... Jest tylko IP... i dobrze! Nie trzeba będzie kombinować :P

Weźmy się więc do pracy!

Na formę wrzuć TIdHTTP z zakładki "Indy Clients", TButton, i TEdit.

Kliknij 2x na Button i zrób coś takiego:


procedure TForm1.Button1Click(Sender: TObject); //procedura kliknięcia na Button1
var                      
  HTML : String;  //deklaracja zmiennej
begin
  HTML := HTTP.Get('http://www.whatismyip.org/');  //pobranie HTML ze strony
  edit1.text := HTML;  //wpisanie pobranego HTML do Edit1
end;  //koniec :P 


Skompiluj i sprawdź.

Mam nadzieję, że Ci się udało :P

Pozdrawiam, HEJ!

10 komentarzy

nofuk 2009-03-14 16:46

program zewnetrzneIP;
{$APPTYPE CONSOLE}
uses
  IDhttp;

var
thisismyip,ip :STRING;
l,p1,p2:integer;
idhttp1:tidhttp;
begin
idhttp1:=tidhttp.Create(nil);
idhttp1.HandleRedirects:=true;
thisismyip :=idhttp1.get('http://www.opensc.ws/myip.php');
L := Length('Your ip is: ');
P1 := Pos('Your ip is: ',thisismyip);
P2 := Pos(' or if u',thisismyip);
IP := Copy(thisismyip,P1 + L, P2 - P1 - L);
idhttp1.Free;
writeln(#13#10);
writeln('--------------------------');
writeln('Twoje IP to: '+Ip) ;
writeln('--------------------------');
readln;
end.

RedbaK 2007-07-30 12:57

A jak ktos usunie strone z której pobierasz IP?
I do cholery nie pisz tych kretyńskich emotikonek języków, buziek, dupek i innych bo to nie blog pryszczatej gimnazjalistki tylko poważny portal o programowaniu. :P :D ;) :)

Wonski 2007-03-09 05:52

Wydaje mi się że prościej umieścić na formie komponent NMEcho i label:

Label1.caption:=NMEcho1.LocalIP;

P.P.P. 2007-02-01 19:41

..zapomniałem dopisać ustawienia dla TSimpleTCPClient

Host:   www.whatismyip.org
Port:   80

migajek => Sposób sprawdzony

Z TClientSocket jest tak samo, tylko że się eventy komponentu nieco inaczej nazywają....

P.P.P. 2007-02-01 16:08

nie ma to jak wwalić opis z błędem...


SKUTECZNE ROZWIĄZANIE:

1 x TButton
1 x SimpleTCPClient (z UtilMinda)  / albo TClientSocket (standardowe w Delphi 4/5/6 - w nowszych dołączane tylko w wersjach komercyjnych - jako pakiet DO SAMODZIELNEJ INSTALACJI !)
1 x TEdit

KOD:

procedure TForm1.Button1Click(Sender: TObject);
begin
  TCPClient.Connected:=True;
end;

procedure TForm1.TCPClientConnected(Sender: TObject);
Var S: TStringStream;
begin
  S:=TStringStream.Create();
  S.WriteString('GET / HTTP/1.1' +#13#10);
  S.WriteString('User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)' +#13#10);
  S.WriteString('Accept: */*' +#13#10+#13#10);
  TCPClient.SendStream(S);
  S.Free;
end;

procedure TForm1.TCPClientRead(Sender: TObject; Stream: TStream);
Var S: TStringStream;
    Tmp_Str: String;
begin
  Stream.Seek(0,soFromBeginning);
  S:=TStringStream.Create(
);
  S.CopyFrom(Stream,0);
  Tmp_Str:=StrPos(PChar(S.DataString),#13#10#13#10);
  Edit1.Text:=Copy(Tmp_Str,5,Length(Tmp_Str)-4);
  S.Free;
end;

migajek 2007-01-26 19:20

voteck, serio? samo IP ci pokazuje? bo mi pokazuje caly kod html (tak jak zreszta napisales w komentarzu) :sciana:

tomkiewicz 2007-01-18 13:07

nie dziala jak trzeba... w moim przypadku (mamy przekazywanie fowarded-for) pokazuje moje wewnętrzne IP. whatismyip.com pokazuje poprawnie zewnetrzne. Za to ip.prv.pl pokazuje oba adresy (o ile zostana przekazane)

jesli ten z koncowka org by sprawdzal, czy fowardowany ip jest z puli wykorzystywanej w lanach, jesli tak to pokazywalby ten bezposredni - elegancko by to dzialalo...

voyteck 2007-01-16 19:06

Po co kombinować? Jest taka stronka, to skorzystajmy z tego. Wszystko jest bezsensowne!  Skoro tak, po co jest ta strona?
Ja tego sposobu kiedyś szukałem i pytałem po forach. W odpowiedziach dostawałem tylko kombinacje z wyciąganiem IP, który stoi po tekście: "Your IP is: '...'"  Tak to można się bawić. Ale jeśli potrzebujesz tego na prawdę to nie ma większego sensu.

Czemu w Polsce wszyscy tylko sobie do gardła skaczą??

A co miałeś na myśli pisząc: co innego gdyby wyciagalo SAM adres z kodu ?

Przecież to wyciąga SAM ADRES. Pierw skompiluj, a potem oceniaj. Wszedłeś wogóle na tę stronę, którą podałem?

voyteck 2007-01-16 19:05

Po co kombinować? Jest taka stronka, to skorzystajmy z tego. Wszystko jest bezsensowne!  Skoro tak, po co jest ta strona?
Ja tego sposobu kiedyś szukałem i pytałem po forach. W odpowiedziach dostawałem tylko kombinacje z wyciąganiem IP, który stoi po tekście: "Your IP is: '...'"  Tak to można się bawić. Ale jeśli potrzebujesz tego na prawdę to nie ma większego sensu.

Czemu w Polsce wszyscy tylko sobie do gardła skaczą??

migajek 2007-01-16 11:10

to juz predzej do FAQ ... chociaz moim zdaniem jest bezsensowne... co innego gdyby wyciagalo SAM adres z kodu (pos + copy), no to moze do FAQ by sie nadalo