Code wurde nach FroggerProgger's Ansicht berichtigt und zwei Posts wurde gelöschtLars hat geschrieben:Zunächst einmal Suchbegriffe
IP WAN Internet External
Bei dieser Frage muss man 2 Fälle unterscheiden:
1) Der Rechner hängt direkt am Internet und ist ggf. an einem LAN angeschlossen, jedoch ohne Router.
Hier kann man die IP-Adressen des Rechners durchgehen.
ExamineIPAdresses() und Konsorten sind dein Freund. Wenn du mehrere
IP Adressen bekommst, wird die Auswahl etwas problematisch. Auf jeden
Fall ist Methode 2) sicherer, jedoch auch etwas komplizierter.
2) Der Rechner geht über einen Proxy oder einen Router ins Internet
Von innen kann man die IP nicht ohne weiteres herrausfinden (Ich hätte
dazu tendiert zu sagen, dass man es nicht kann, aber die Erfahrung
lehrte mich, so etwas nie zu sagen, denn meistens findet sich doch
jemand, der einen des Gegenteiles belehrt). Deshalb muss man Auf einen
Server Im Internet connecten, der dann die IP des Stellers der Anfrage,
also dem PC, auf dem dein Programm läuft zurückgibt. Dazu gibt es dann
verschiedene Möglichkeiten. Die einfachste ist wohl ein PHP Skript,
aber auch ein selbstgeschriebener Server sollte klappen .
In dem nachfolgendem Code habe ich mir erlaubt, einfach einen Code von
Froggerprogger zu zitieren. In dem Header des Codes findet sich auch
der PHP Code sowie die 2. Möglichkeit, www.myip.com.
Der Code ist teilweise von mir kommentiert.
Dank API ist dieser Code rein Windows, mit etwas mehr Aufwand lässt
sich das aber auch in rein PB bewerkstelligen.Man suche sich die schönere Variante aus, aber so lange man nich einenCode: Alles auswählen
; IP aus dem Internet holen ; 15.04.04 by Froggerprogger ; ; nutzt entweder den Service www.myip.com oder ; das unter der Adresse http://www.2mal2mal.de/public/stuff/showIP.php abgelegte folgende PHP-Script: ; ; <html> ; <head></head> ; <body bgcolor="#000000" text="#999999"> ; ; <?PHP ; $akttime=Date("d.m.Y, D, H.i.s",Time()); ; echo "Serverzeit: $akttime <br>Browser-ID: $HTTP_USER_AGENT <br>Referer: $HTTP_REFERER<br>IP: $REMOTE_ADDR<br>Port: $REMOTE_PORT"; ; ?> ; ; </body> ; </html> ; Diese Procedure lädt nur die angegebene Datei url.s an den ; Memorybuffer an Position *lpRam mit der Länge ramsize. Procedure.l DownloadToMem ( url.s, *lpRam, ramsize.l ) ; DownloadToMem(): ; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2808&highlight= ; Author: dige ; Date: 12. November 2003 Protected agent.s, hINet.l, hData.l, bytes.l ; Datei und Internet-Verbindung öffnen agent.s = "Mozilla/4.0 (compatible; ST)" hINet.l = InternetOpen_ ( @agent.s,0,0,0,0 ) hData.l = InternetOpenURL_ ( hINet, @url.s, "", 0, $8000000, 0 ) ; Und die Datei in den Buffer lesen If hData > 0 : InternetReadFile_ ( hData, *lpRam, ramsize.l, @bytes.l ) : Else : bytes = -1 : EndIf ; Und alles wieder schließen InternetCloseHandle_ (hINet) InternetCloseHandle_ (hFile) InternetCloseHandle_ (hData) ProcedureReturn bytes.l EndProcedure GetIPBufferSize.l = 1000 mem.s = Space(GetIPBufferSize) ; Buffer etwas heruntergeregelt, 64K erschienen mir ; unnötig ; Hier werden nur noch die Dateien in den Speicher geladen und geparsed. If DownloadToMem ( "http://www.myip.com", @mem, GetIPBufferSize) ip.s = StringField(StringField(mem, 4, " "), 1, "<") EndIf mem.s = Space(GetIPBufferSize) If DownloadToMem ( "http://www.2mal2mal.de/public/stuff/showIP.php", @mem, GetIPBufferSize) pos.l = FindString(mem, "IP: ", 1) ip2.s = StringField(PeekS(@mem + pos + 3), 1, "<") EndIf MessageRequester("","Deine IP im Internet ist:"+Chr(13)+Chr(10)+ip+" (www.myip.com)" + Chr(13)+Chr(10) +ip2+" (www.2mal2mal.de/public/stuff/showIP.php)", 0)
sehr schnellen Webspace hat, ist meiner Meinung nach www.myip.com der
Vorzug zu geben, da Erreichbarkeit und Geschwindigkeit einfach höher
sind.
So weit,
Lars
Und Lars hatte auch noch etwas auszusetzen und hat weiter repariert, entschuldigt die Unannehmlichkeiten.