Aktuelle Zeit: 18.10.2019 00:52

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: (WinAPI) Wie finde ich meine IP im Internet herraus?
BeitragVerfasst: 29.08.2004 07:34 
Offline
-= Anfänger =-
Benutzeravatar

Registriert: 29.08.2004 03:07
Lars 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.
Code:
; 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)

Man suche sich die schönere Variante aus, aber so lange man nich einen
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

Code wurde nach FroggerProgger's Ansicht berichtigt und zwei Posts wurde gelöscht
Und Lars hatte auch noch etwas auszusetzen und hat weiter repariert, entschuldigt die Unannehmlichkeiten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.10.2004 14:28 
Offline
Benutzeravatar

Registriert: 29.08.2004 15:07
Wohnort: Oktoberfest
hi,

ich hab da glaub ich nen fehler entdeckt, denn beim empfang von meinem router bekomme ich immer nur einen kleinen teil der html seite, das liegt daran das der router scheinbar nur recht kleine packete verschickt und die werden beim einmaligen aufruf von InternetReadFile nicht alle erwischt.
so funktioniert es bei mir allerdings problemlos:

Code:
Procedure.l DownloadToMem(url.s, *ramsize.LONG)
  agent.s = "Mozilla/4.0 (compatible; ST)"
  hINet.l = InternetOpen_(@agent,0,0,0,0)
  hData.l = InternetOpenURL_(hINet, @url, "", 0, $8000000, 0)
  If hData > 0
    *lpRam = AllocateMemory(*ramsize\l)
    Repeat
      If AllBytes >= *ramsize\l
        *ramsize\l<<1
        *newRam = ReAllocateMemory(*lpRam, *ramsize\l)
        If *newRam > 0
          *lpRam = *newRam
        Else
          Debug "Speicherfehler"
          Break
        EndIf
      EndIf
      InternetReadFile_(hData, *lpRam + AllBytes, *ramsize\l - AllBytes, @bytes.l)
      AllBytes.l + bytes
    Until bytes = 0
  Else
    AllBytes = -1
  EndIf
  InternetCloseHandle_(hINet)
  InternetCloseHandle_(hFile)
  InternetCloseHandle_(hData)
  *ramsize\l = AllBytes
  If AllBytes >= 0
    ProcedureReturn ReAllocateMemory(*lpRam, AllBytes)
  Else
    FreeMemory(*lpRam)
    ProcedureReturn -1
  EndIf
EndProcedure

Size.l = 1000
*html = DownloadToMem("http://www.purebasic.de", @Size)
Debug PeekS(*html, Size)
Debug Size


edit: hab noch ein paar fehler beseitigt (11.01.2005)

mfG
Tobi


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 13.03.2005 12:49 
Offline

Registriert: 08.09.2004 18:41
www.myip.com gibt es nicht mehr! Die Seite ist ein Opfer von einer der vielen *billigen* Search-engines geworden.

mfG
Basti

_________________
enjoy life... while you can!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye