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 |
Re: Internet IP / WAN IP herausfinden
Zitat:
|
Re: Internet IP / WAN IP herausfinden
Zitat:
mfg |
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:
MfG Alaitoc PS: Falls ich Unsinn rede korrigiert mich :wink: |
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?
|
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 |
Re: Internet IP / WAN IP herausfinden
welche komponente wurde bei dem swissdelphicenter tutorial benutzt? --> nmhttp1
|
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 |
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 |
Re: Internet IP / WAN IP herausfinden
tidhttp habe ich auch schon versucht. aber er kennt 'body' nicht :gruebel:
|
Re: Internet IP / WAN IP herausfinden
wofür wolltest du denn bei der idHTTP-kompo ein 'body' haben?
|
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; |
Re: Internet IP / WAN IP herausfinden
bei der idHTTP-kompo geht das etwas anders.
da speicherst du mit
Delphi-Quellcode:
den quelltext in der variable "Response"
var
Response: String; begin Response := idHTTP.Get(URL); ... end; 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:
so bräuchtest du kein script auf nem eigenen server.
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; für den hausgebrauch sollte die o.g. funktion wohl ausreichen! |
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 |
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? |
Re: Internet IP / WAN IP herausfinden
Delphi-Quellcode:
mfg
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; |
Re: Internet IP / WAN IP herausfinden
Zitat:
eine verbindung auf irgendeinem port (denn du setzt diesen wert ja nicht) aufzubauen. |
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 00:49 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