Autor Beitrag
Crowbar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Fr 29.08.03 21:04 
Hallo,
wie bekomme ich meine eigene Internet-IP-Adresse mit einer Programmroutine heraus?
Ich habe D6 sowie eine Netzwerkkarte.
Im Forum habe ich schon gesucht! Doch die vorgestellten Routinen geben mir nur ständig die lokale IP meiner Netzwerkarte heraus, nicht aber die IP-Adresse, mit der ich derzeitig im Internet verbunden bin.

Auf einen guten Rat, vielleicht mit Code hoffend...

Crowbar
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Fr 29.08.03 21:51 
Hallo!

Super-einfach ist: www.whatismyip.com/ runterladen, dann im Ergebnis nach 'Your ip is ' suchen und dahinter steht sie!

Das funktioniert auch in Verbindung mit Routern oder ähnlichen, weil da in der Regel die "üblichen IP-Ausleseprogramme" die IP des Rechners gegenüber dem Route (also die lokale Netzwerk-IP) herausbekommen.

Für den Zugriff empfehle ich die Indy-Komponenten, hier IdHttp.

Gruß

Dietmar Brüggendiek
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Fr 29.08.03 21:52 
Du brauchst:
1x NMHTTP ( Fastnet-Komponentenleiste ) //HTTP
1x Button //btn_Search
1x Edit //txt_InternetIP

Und trägst in das OnClick Ereignis des Buttons ein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
TForm1.btn_SearchClick(Sender: TObject);
const
  sURL = 'http://www.whatismyip.com';
  sSearchText = 'your ip is';
var
  sResult: string;
  sIP    : string;
begin
  try
    HTTP.Get(sURL);
    sResult := http.Body;
    sResult := LowerCase(sResult);
    sIP := Copy(sResult, pos(sSearchText, sResult) + Length(sSearchText) + 1,pos(' ', Copy(sResult, pos(sSearchText, sResult) + Length(sSearchText) + 1, length(sResult))) -1 );
    txt_InternetIP.Text := sIP; // hier nun deine ip...
  except
    ShowMessage('Sorry, Die Internet IP kann nicht angezeigt werden !!!');
  end;
end;


Ich hoffe ich hab dir weiterhelfen können ... :lol:

gruß
oPPi
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 31.08.03 06:30 
Es geht auch komplett ohne Komponenten:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
uses
  winsock;

function GetLocalIPs: String;
type PPInAddr= ^PInAddr;
var
  wsaData : TWSAData;
  HostInfo : PHostEnt;
  HostName : Array[0..255] of Char;
  Addr : PPInAddr;
begin
  if WSAStartup($0102, wsaData) <> 0 then Exit;
  try
    if GetHostName(HostName, SizeOf(HostName)) <> 0 then
    begin
      result:='';
      Exit;
    end;
    HostInfo:= GetHostByName(HostName);
    if HostInfo=nil then
    begin
      result:='';
      Exit;
    end;
    Addr:=Pointer(HostInfo^.h_addr_list);
    if (Addr=nil) or (Addr^=nil) then
    begin
      result:='';
      Exit;
    end;
    if not (copy(strpas(inet_ntoa(addr^^)),1,7) = '192.168') then
    begin
      result:=StrPas(inet_ntoa(Addr^^));
      inc(Addr);
    end
    else
    begin
      inc(addr);
      while Addr^ <> nil do
      begin
        result:=StrPas(inet_ntoa(Addr^^));
        inc(Addr);
      end;
    end;
  finally
    WSACleanup;
  end;
end;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function GetIP: String;
var phoste : PHostEnt;
    Buffer : array[0..100] of Char;
    WSAData : TWSAData;
begin
     result := '';
     if WSAStartup($0101, WSAData)<>0 then exit;
     GetHostName(Buffer, SizeOf(Buffer));
     phoste := GetHostByName(Buffer);
     if phoste = NIL then result := '0.0.0.0'
     else result := StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
     WSACleanup;
end;

Der obere Code sollte auch alle lokalen IPs, also auch die aus dem Lan liefern.
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: So 31.08.03 13:03 
Bei den Versionen von Luckie besteht aber eben das Porblem, wenn man hinter nem Router oder Proxy hängt.... dann bekommt man nix bzw. die falsche IP. Ich würd auch die Sache mit dem whatismyip.com bevorzugen. wenn man selber irgendwo space im netz hat, auf dem PHP läuft, kann man es sich auch einfacher machen und das Script auf den Server packen:

PHP Script hat folgendes geschrieben:

<?php
echo $_SERVER["REMOTE_ADDR"];
?>


dann bekommt man nur die IP ausgegeben und muss sie sich nich erst noch rausfiltern ;) das prob is eben, dass whatismyip.com auch mal das "Layout" ändern kann und dann stimmt die Auslese-Routine nich mehr...



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Crowbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: So 31.08.03 17:22 
Hallo,
ich habe "Luckie's" - Routine -> "GetLocalIPs" ausgetestet.
Sie funktioniert einwandfrei und liefert mir "trotz" meiner Netzwerkkarte und einem vorgeschalteten Proxie die richtige Internet-IP-Adresse.

Vielen Dank an Luckie und den anderen :-) !

Tschüss Crowbar
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Mo 01.09.03 09:51 
@MrSaint

dein tipp mit dem php-script is verry good.

hab das jetzt bei mir auf die website gepackt und brauch nicht mehr
über whatismyip.com gehen. hatte da schon öfters das prob das die
nicht erreichbar waren.


Zuletzt bearbeitet von oPPi am Mo 15.09.03 11:35, insgesamt 1-mal bearbeitet
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 01.09.03 10:20 
@oPPi: freut mich ;)


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Experience1986
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Mo 15.09.03 10:36 
Hab durch zufall hier mal durchgegugt.

PHP Script hat folgendes geschrieben:

<?php
echo $_SERVER["REMOTE_ADDR"];
?>


@MrSaint
So bekommt man leider die Server IP, für die IP des Besuchers (was ja durch ein Programm dann passieren würde) brauch man nur:
<?php
echo $REMOTE_ADDR;
?>
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mo 15.09.03 11:21 
Ich würde, bei einer Anwendung bei der sowieso das Internet "an" sein muss über die whatismyip.com Lösung gehen, da ich dann die echte IP hätte, wenn zum Beispiel der Rechner hinter einem Gateway sitzt, aber mich das nicht interessiert, sondern nur die IP.

Viele IF THENs ich weiss
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Mo 15.09.03 11:46 
Du kannst auch:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.btn_LoadClick(Sender: TObject);
var
  URL : String;
begin
  URL:='http://www.it-leinefelde.de/delphi/myip.php';
  NMHTTP1.Get(URL);
  txt_Internet_IP.Text := NMHTTP1.Body;
end;


verwenden, bei whatismyip.com hab ich das problem schon öfters
gehabt, das die seite nicht erreichbar war. Ich hab DSL und mein
Rechner sitzt auch hinter einem Router und es wird mir über den
Script:

ausblenden Quelltext
1:
2:
3:
<?php 
echo $REMOTE_ADDR; 
?>


auch die genaue Internet-IP angezeigt. Dein Webspace muß natürlich PHP unterstützten.
mlspider
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 23.10.03 22:10 
Wie wär's denn hiermit:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
implementation

uses registry;

{$R *.dfm}

var regist : TRegistry;

procedure TForm1.FormCreate(Sender: TObject);
begin
 regist := TRegistry.Create;
 regist.RootKey := HKEY_LOCAL_MACHINE;
end;

function GetIPAddress: string;

var phoste : PHostEnt;
    Buffer : array [0..100] of char;
    WSAData : TWSADATA;

begin
 result := '';
 if WSAStartup($0101, WSAData) <> 0 then exit;
 GetHostName(Buffer, SizeOf(Buffer));
 phoste :=GetHostByName(buffer);
 if phoste = nil then
  result := '127.0.0.1'
 else
  result := StrPas(inet_ntoa(PInADDr(phoste^.h_addr_list^)^));
 WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 regist.OpenKey('\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{6313E1DE-FDA3-4C50-859E-07BB4854DDCD}',True);
 Label4.Caption := regist.ReadString('DhcpIPAddress');
 Label6.Caption := GetIPAddress;
 Label8.Caption := '127.0.0.1';
end;
wham1010
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Win XP Prof.
D6 Pers
BeitragVerfasst: So 16.11.03 23:36 
Titel: noch eine frage dazu!
Hallo!!

wollt das selbe jetzt auch auf die basis mit dem eigenen php-Script realisieren, jedoch mit den indy-Komponenten. leider schein ich mich damit nicht ganz zurechtzufinden (heut erst installiert!)!
kann zwar die URL mit IdHTTP1.Get(URL); aufrufen, jedoch hab ich jetzt keine ahnung, wie ich den IP-String hier auslese (IdHTTP.Body scheints ja nicht zu geben wie bei der Fastnet-komponente)

vielen dank im voraus!
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Mo 17.11.03 00:36 
hy das funzt bei mir so:

ausblenden Delphi-Quelltext
1:
txt_WebIP.Text:= HTTP1.Get('http://www.meinserver.de/myip.php');					


in dem Textfeld wird dir dann deine Internet-IP angezeigt.

Gruß
oPPi