Delphi-PRAXiS

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)

daniel-h 3. Jun 2009 16:31


Internet IP / WAN IP herausfinden
 
hallo,
wie kann ich die Internet ip (WAN ip) eines pc's rausfinden?
ich habe es mit Indy idipwatch probiert (Currentip) aber der zeigt dann garnichts an.
die lokale ip geht ja, ist aber für mich uninteressant.

bei delphi-treff habe ich mal ein tutorial dazu gelesen um die ip auszulesen. das geht auch nicht.
bei diesem tutorial zeigt er dann auch an, ob der pc mit dem i-net verbunden ist oder nicht. da hat er immer offline angezeigt, obwohl ich online wahr :gruebel:

kann es sein, dass diese funktion nur bei modem/ isdn geht?


p.s. ich habe indy 9

mfg

quendolineDD 3. Jun 2009 16:43

Re: Internet IP / WAN IP herausfinden
 
Zitat:

kann es sein, dass diese funktion nur bei modem/ isdn geht?
Welche denn? Geb' mal Link zu dem Tutorial.

daniel-h 3. Jun 2009 16:46

Re: Internet IP / WAN IP herausfinden
 
Zitat:

Zitat von quendolineDD
Zitat:

kann es sein, dass diese funktion nur bei modem/ isdn geht?
Welche denn? Geb' mal Link zu dem Tutorial.

>>KLiCK<<

mfg

Alaitoc 3. Jun 2009 16:47

Re: Internet IP / WAN IP herausfinden
 
Ich schätze mal du sitzt hinter einem Router...dann wäre das hier z.b. ein Ansatz:

http://www.swissdelphicenter.ch/de/showcode.php?id=965

Dabei ist zu beachten:

Zitat:

Wenn man hinter einem Router oder Proxy seine richtige Internet-IP herausfinden möchte, dann brauch man die Hilfe von einem externen Internetserver, der einem die IP „verrät“.
Ist also direkt nicht einfach so möglich die Internet-IP herauszufinden wenn man hinter nem Router hängt.


MfG Alaitoc


PS: Falls ich Unsinn rede korrigiert mich :wink:

quendolineDD 3. Jun 2009 16:57

Re: Internet IP / WAN IP herausfinden
 
Es muss am Router ja Schnittstellen geben, um mit diesen zu kommunizieren... Vielleicht gibt es da ja einen Ansatz?

Alaitoc 3. Jun 2009 17:00

Re: Internet IP / WAN IP herausfinden
 
Naja das Problem dabei wäre wohl das diese Schnittstellen sich ja je nach Router-Typ unterscheiden,
also wohl auch nicht umbedingt die beste Lösung wenn man sich nicht auf einem Router-Typ festfahren will.

MfG Alaitoc

Edit: Sonst würde es z.b. noch über eine Seite gehen wie ttp://www.whatismyip.com/ :

http://www.swissdelphicenter.ch/torr...de.php?id=1013

daniel-h 3. Jun 2009 17:05

Re: Internet IP / WAN IP herausfinden
 
welche komponente wurde bei dem swissdelphicenter tutorial benutzt? --> nmhttp1

Alaitoc 3. Jun 2009 17:08

Re: Internet IP / WAN IP herausfinden
 
TIDHTTP von Indy wäre wohl der Ersatz dafür,
TNMHTTP gabs wohl bei Delphi 6 und niedriger...wohl etwas älter das Tutorial ^^'

MfG Alaitoc

quendolineDD 3. Jun 2009 17:08

Re: Internet IP / WAN IP herausfinden
 
Die Lösung wäre sogar so speziell, dass damit nicht nur auf einen Router-Typen sich festgelegt werden muss, sondern auch auf eine Firmware.
Aber mir scheint, der TE kennt google nicht. Ohne externe Hilfe wird das nichts. Durch das NAT weiß ein PC im Netzwerk ja nicht einmal, das er nach außen eine andere IP hat.

Also Lösungsvorschläge meinerseits:
Nutzung eines externen Dienstes zur Ermittlung der WAN-IP.
Nutzung von dyndns

daniel-h 3. Jun 2009 17:15

Re: Internet IP / WAN IP herausfinden
 
tidhttp habe ich auch schon versucht. aber er kennt 'body' nicht :gruebel:

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 01:17 Uhr.

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