Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   IP Watcher (https://www.delphipraxis.net/46404-ip-watcher.html)

Rastaman 25. Mai 2005 11:55

Re: IP Watcher
 
Jo aber ich habs noch in einem Textfeld stehen.

shmia 25. Mai 2005 14:17

Re: IP Watcher
 
Zitat:

Zitat von Interceptor
Vergiss den TWebBrowser um die IP zu ermitteln

Hier ist ein schönes Stückchen Code um sämtliche IP's (Netzwerk & Inet) zu ermitteln. Nicht vergessen die unit Winsock in den uses mit aufzunehmen.

Ich wette, keiner von Euch hat meinen Betrag über das Programm IPGet wirklich richtig gelesen.
Hier nochmals das Grundprinzip, wie man die eigene IP, mit der man im Internet arbeitet, herausfindet.
Und zwar unabhängig davon, ob ein Router oder ein Proxy-Server dazwischen ist:

Man stellt eine HTTP-Anfrage an eine der folgenden URLs und wertet das Ergebnis aus:
http://checkip.dyndns.org
http://checkip.dyndns.org:8245
http://ipdetect.dnspark.com
http://ip.ChangeIP.com/ip.asp
http://www.dnsart.com/myip.php
http://www.dnsart.com:7777/myip.php
http://dynupdate.no-ip.com/ip.php
http://update.dynu.com/basic/ipcheck.asp
http://dynamic.zoneedit.com/checkip.html
Das Ergebnis sieht ungefähr so aus:
Code:
<html>
<head>
<meta http-equiv="Expires" content="Tues, 04 Dec 1996 21:00:00 GMT">
<meta http-equiv="pragma" content="no cache">

<title>IPDetect.DNSPark.com</title>
</head>
<body>

Current Address: 211.186.108.69
</body>
</html>
Jetzt muss man nur mit etwas Stringverarbeitung die IP-Adresse herausziehen.
Dazu braucht man keinen TWebBrowser (zu viel Overhead) und WinSock wäre zu systemnah.
Ein Web-Seite lässt sich mit ganz wenig Aufwand downloaden:
Delphi-Quellcode:
uses ...,WinINet;
function DownLoadInternetFile(const Source, Dest : String): Boolean;
begin
   Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
end;
...
DownloadInternetFile('http://ipdetect.dnspark.com', 'C:\IP.txt');

Luckie 25. Mai 2005 14:20

Re: IP Watcher
 
@shmia: Nichts anderes mache ich auch, nur dass ich meine eigene PHP Seite benutze, weil ich da nichts mehr rauskopieren muss. ;)

shmia 25. Mai 2005 14:42

Re: IP Watcher
 
Zitat:

Zitat von Luckie
@shmia: Nichts anderes mache ich auch, nur dass ich meine eigene PHP Seite benutze, weil ich da nichts mehr rauskopieren muss. ;)

Dann verrate hier doch die URL deiner PHP Seite,
dann nehmen alle nur noch diese und du bekommt mehr Traffic. :mrgreen:

Luckie 25. Mai 2005 15:00

Re: IP Watcher
 
myip.php Nur hatte mein Webhoster gestern Nachmittag einen Fetsplattencrash und seit dem sind sie dabei das wieder hinzukriegen:
Zitat:

Festplattenschaden

Es erfolgt derzeit eine Wiederherstellung der Webdaten, die bis voraussichtlich 16:00Uhr andauern wird. Hierdurch steht bis zu dieser Uhrzeit kein FTP- sowie HTTP-Dienst zur Verfügung. Der E-Mail-Dienst (POP3/SMTP) wird über einen Backupserver zur Verfügung gestellt, so dass Sie alle E-Mails erhalten und senden können. Wir danken für Ihr Verständnis.
Der Code:
Delphi-Quellcode:
function GetTempDir: string;
var
  Buffer: array[0..MAX_PATH - 1] of Char;
  Len: DWORD;
begin
  result := '';
  Len := GetTempPath(sizeof(Buffer), Buffer);
  if Len > 0 then
    SetString(result, Buffer, Len);
end;

function GetTempName(const aDir: string): string;
var
  Buffer: array[0..MAX_PATH - 1] of Char;
  uUnique: DWORD;
begin
  result := '';
  if aDir <> '' then
  begin
    uUnique := GetTempFileName(@aDir[1], '$IP', 0, Buffer);
    if uUnique <> 0 then
      result := string(Buffer);
  end;
end;

procedure DownloadFile(URL: string; Filename: string);
begin
  URLDownloadToFile(nil, PChar(Url), PChar(Filename), 0, nil);
end;
Delphi-Quellcode:
TempFilename := GetTempName(GetTempDir);
  DownloadFile(URL, TempFilename);
  AssignFile(F, TempFilename);
{$I-}
  Reset(F);
{$I+}
  s := '';
  if IOResult = 0 then
  begin
    while not EOF(F) do
      Readln(F, s);
  end;
  CloseFile(F);

  DeleteFile(pointer(TempFilename));

Rastaman 25. Mai 2005 17:31

Re: IP Watcher
 
Luckie du machst es dir wie immer unnötig schwer :mrgreen:

Delphi-Quellcode:

    txtIP.Text := WB.OleObject.Document.Forms.Item(0).Elements.Item(0).Value;
Fertig :)
Die paar kb für den Webbrowser bringen dich schon nicht um :-D

[edit1] Soweit ich weiß brauch man URLMon und nicht WinInet um URLDownloadToFile zu benutzen [/edit1]

[edit2] Ok überredet URLMon is viel kleiner :wall: [/edit2]

Luckie 25. Mai 2005 17:39

Re: IP Watcher
 
Nein das ist nicht unnötig schwer, da nicht jeder TWebBrowser zur Verfügung hat. Dann barucht man mit meiner Methode auch nicht das ActiveX zu importieren. Ist somit mit jeden Delphi kompilierbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.
Seite 3 von 3     123   

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