AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Internet-IP durch Routerabfrage ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Internet-IP durch Routerabfrage ermitteln

Ein Thema von Cmd.exe · begonnen am 15. Jul 2005 · letzter Beitrag vom 12. Nov 2006
Antwort Antwort
Cmd.exe

Registriert seit: 15. Jul 2005
Ort: Ingolstadt
8 Beiträge
 
Delphi 2006 Architect
 
#1

Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 14:20
Hi,
da ich zur Zeit einen Chat programmiere und ihn internettauglich machen will, muss mein Proggi meine aktuelle Internet-IP herausfinden können. Ich weiß, dass es die Möglichkeit gibt, aus einer Website, die meine IP anzeigt, die IP zu kopieren, aber das finde ich zu umständlich. Außerdem würde der Spaß ein Ende haben, sobald es diese Seite nicht mehr gibt oder der Server irgendwelche Probleme hat. Mir ist eingefallen, dass man doch direkt den Router abfragen könnte, ich weiß aber nicht wie und ob das überhaupt möglich ist. Ich hoffe, ihr könnt mir weiterhelfen.
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.
Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von fred.reichbier
fred.reichbier

Registriert seit: 27. Apr 2004
154 Beiträge
 
#2

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 14:23
erstmal herzlich willkommen
hier gibts ne codelibrary
klick
Friedrich Weber
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 14:25
Zitat:
da ich zur Zeit einen Chat programmiere
Kommt drauf an welche Internetkomponenten du bereits benutzt. Die Sockets zum Beispiel teilen dem Serverprogramm automtisch die IP der Clients mit (da es sonst ja logischerweise keine Verbindung geben könnte).
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#4

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 14:30
Auch von mir erstmal Herzlich Willkommen!

Also, beim Aulsesen des Routers dürfte dir die Vielzahl an Routerherstellern und -modellen einen Strich durch die Rechnung machen. Zumindest wenn es um native Abfrage des Routers geht.

Könnte aber sein, dass es per UPnP ne Möglichkeit gibt. Azureus z.B. setzt "sein" Portforwarding auch per UPnP und löscht es hinterher wieder. Allerdings dürften auch noch ne Menge Router ohne/mit deaktivertem UPnP in Gebrauch sein.

Aber der Tipp vom fred ist doch schon ganz gut. Man könnte ja ne INI-Datei mit Anbiertern eintragen und diese solange durchlaufen, bis man eine IP bekommen hat...

€dit:
Hab ich solange gebraucht*wunder* Der Hinweis von PierreB ist natürlich auch einiges wert
  Mit Zitat antworten Zitat
Cmd.exe

Registriert seit: 15. Jul 2005
Ort: Ingolstadt
8 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 14:54
Mir hat freds Tipp auch ganz gut gefallen und das mit der Ini-Datei werd ich wahrscheinlich auch noch einbauen.
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.
Albert Einstein
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 15:17
das einfachste und zuverlässigste für jeden user wäre eine abfrage der ip über einen webserver der dir deine client-inet ip sagt.
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 15. Jul 2005, 23:12
Ist ectl etwas umständlich aber man könnte doch auch den Router per WebComp aufrufen. Wenn man weiss welche Daten für den Login gesetzt werden und man einmal drin ist kann man auch daraus direkt die IP auslesen.

Es gibt da auch nen Programm, nennt sich wenn ich mich nicht irre Router Control. Die haben das genau so gelöst. In einer ini stehen nen haufen Routertypen(Bei weitem aber nicht alle), dort wird dann der Loginstring gesendet und dann einfach gewisse Daten rausgefiltert wie z.B. IP, Verbindungsstatus, Firmware usw.

Das mit dem Login habe ich noch nie gemacht nur die Daten auslesen aus einer WebComp und das ist auch recht einfach, wenn man sich einmal den Quellcode angesehen hat.

Edit: Wie Supermuckl schon geschrieben hat wäre es am einfachsten mit einer statischen Adresse, Wenn Dein Router DynDns fähig ist wäre das wohl die einfachste Lösung. Müsstest dann nur aufpassen das sich Dein Router nicht aufhängt, wie es bei mir gelegentlich der Fall ist. Bin zwar online und der Router verrichtet seinen Dienst, jedoch kann ich mich nicht einloggen und die DynDns wird nicht akualisiert.
Daniel
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#8

Re: Internet-IP durch Routerabfrage ermitteln

  Alt 12. Nov 2006, 13:00
Hallo,

hier eine ganz kurze Lösung für dein Problem:
Du musst UPNP.dll importieren und in uses muss activex stehen.

Delphi-Quellcode:
function getglobalip:string;
var
  UPnPDeviceFinder : IUPnPDeviceFinder;
  UPnpDevices : IUPnpDevices;
  EnumVariant, EnumVariant2 : IEnumVariant;
  rgvar, rgvar2 : OleVariant;
  celtFetched, celtFetched2 : Cardinal;
  UPnpDevice : IUPnpDevice;
  Erg : HResult;
  UPnpService : IUPnpService;
  res,res1,t2:olevariant;
begin
  result:='Error';
  UPnPDeviceFinder := CoUPnPDeviceFinder.Create;
  UPnpDevices := UPnPDeviceFinder.FindByType('urn:schemas-upnp-org:service:WANIPConnection:1', 0);
  EnumVariant := IEnumVariant(UPnpDevices._NewEnum);
  EnumVariant.Next(1, rgvar, celtFetched);
  UPnpDevice := IUPnpDevice(IUnknown(rgvar));
  EnumVariant2 := IEnumVariant(UPnpDevice.Services._NewEnum);
  Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
  Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
  UPnpService := IUPnPService(IDispatch(rgvar2));
  res := VararrayCreate([0, 1], varVariant);
  res1 := VararrayCreate([0, 0], varVariant);
  t2:=UPnpService.InvokeAction('GetExternalIPAddress',res1,res);
  result:=res[0];
end;
Achtung: In dieser Routine sind keine Sicherheitsabfragen und sie ist ausschliesslich auf Fritzbox WLAN 2+ zugeschnitten. Doppelte Programmzeilen sind kein Fehler sondern absolut nötig.
Aber Achtung: Ohne die Mithilfe einiger lieber Kollegen und dem Intel Devicespy Tool ist es kaum möglich dahinterzukommen was hier gespielt wird.

Rainer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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