Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Internet IP / WAN IP herausfinden (https://www.delphipraxis.net/135040-internet-ip-wan-ip-herausfinden.html)

nat 3. Jun 2009 17:24

Re: Internet IP / WAN IP herausfinden
 
wofür wolltest du denn bei der idHTTP-kompo ein 'body' haben?

daniel-h 3. Jun 2009 17:27

Re: Internet IP / WAN IP herausfinden
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  IPSTR, IP, HP: string;
  BeginIP, EndIP, i: integer;
begin
  Button1.Enabled := False;
  HP     := ‘[url]http://www.my-server.de/cgi-bin/GiveMeMyIp.pl’;[/url]
    NMHTTP1.Get(HP);
  IPSTR  := (NMHTTP1.Body);
  BeginIP := Pos('BEGINIP', IPSTR) + Length('BEGINIP');
  EndIP  := Pos('ENDIP', IPSTR);
  IP     := '';
  for i := BeginIP to ENDip - 1 do
  begin
    IP := IP + IPstr[i];
  end;
  label1.Caption := IP;
  Button1.Enabled := True;
end;

nat 3. Jun 2009 17:42

Re: Internet IP / WAN IP herausfinden
 
bei der idHTTP-kompo geht das etwas anders.
da speicherst du mit
Delphi-Quellcode:
var
  Response: String;
begin
  Response := idHTTP.Get(URL);
  ...
end;
den quelltext in der variable "Response"
guck dir einfach mal die hilfe zu TidHTTP an.

zu deine, problem:
um z.B. die ip von einem anbieter wie wieistmeineip.de auszulesen
könntest du es so machen:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  function ParseIP(const Text: String; out IP: String): Boolean;
  var
    idx, idx2: integer;
  begin
    result := false;
    idx := pos('Ihre IP-Adresse ist :', Text);
    if idx = 0 then exit;
    inc(idx, 21);

    idx := posEx('>', Text, idx);
    if idx = 0 then exit;
    inc(idx);

    idx2 := posEx('<', Text, idx);
    if idx2 = 0 then exit;

    IP := copy(Text, idx, idx2-idx);
    result := length(IP) >= 7;
  end;

var
  http: TidHTTP;
  Response, IP: String;
begin
  http := TidHTTP.Create(self);
  try
    Response := http.Get('http://www.wieistmeineip.de');
    if not ParseIP(Response, IP) then
      raise Exception.Create('IP konnte nicht ausgelesen werden');

    showmessage('Deine IP: ' + IP);
  finally
    http.free;
  end;
end;
so bräuchtest du kein script auf nem eigenen server.
für den hausgebrauch sollte die o.g. funktion wohl ausreichen!

daniel-h 3. Jun 2009 18:37

Re: Internet IP / WAN IP herausfinden
 
danke, funktioniert :thumb:

jetzt probier ich vergeblich, dass clientsocket1.address diesen wert zugeteilt bekommt, aber es klappt nicht.
wenn ich das programm starte, bleibt das feld leer. aber wenn ich edit1.text diesen wert zuteile, klappt das.
achja clientsocket1.active steht auf false

mfg

nat 3. Jun 2009 18:49

Re: Internet IP / WAN IP herausfinden
 
mit TClientSocket kenne ich mich nich groß aus. ich benutze für alles die jeweiligen indy-kompos.
hab aber ma grad schnell in die d7 hilfe geguckt und eigentlich sollte das gehen...
is ja laut hilfe n string. was passiert denn bzw wie sieht dein code denn aus?

daniel-h 3. Jun 2009 18:54

Re: Internet IP / WAN IP herausfinden
 
Delphi-Quellcode:
function ParseIP(const Text: String; out IP: String): Boolean;
  var
    idx, idx2: integer;
  begin
    result := false;
    idx := pos('Ihre IP-Adresse ist :', Text);
    if idx = 0 then exit;
    inc(idx, 21);

    idx := posEx('>', Text, idx);
    if idx = 0 then exit;
    inc(idx);

    idx2 := posEx('<', Text, idx);
    if idx2 = 0 then exit;

    IP := copy(Text, idx, idx2-idx);
    result := length(IP) >= 7;
  end;


procedure TForm1.FormCreate(Sender: TObject);
var
  Response: String;
begin
  http := TidHTTP.Create(self);
  try
    Response := http.Get('http://www.wieistmeineip.de');
    if not ParseIP(Response, IP) then
      raise Exception.Create('IP konnte nicht ausgelesen werden');
  finally
    http.free;
  end;
client.Address := IP;
client.Active := true;
end;
mfg

nat 3. Jun 2009 19:03

Re: Internet IP / WAN IP herausfinden
 
Zitat:

Zitat von daniel-h
Delphi-Quellcode:
client.Address := IP;
client.Active := true;

was hast du überhaupt vor? im mom versuchst du zu dir selber (oder deinem router)
eine verbindung auf irgendeinem port (denn du setzt diesen wert ja nicht) aufzubauen.

daniel-h 4. Jun 2009 18:46

Re: Internet IP / WAN IP herausfinden
 
hab ich auch gemerkt, habe es jetzt gelöst (mit dyndns)

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz