Seite 1 von 3

Die eigene IP ermitteln

Verfasst: 08.02.2005 16:17
von nicolaus
Der nachfolgende code zeigt mal ein beispiel wie man die IP ermittelt die der Provider einem vergeben hat als man sich zum Inet connectet hat.

(mit debuger starten)

Code: Alles auswählen

; Funktion um seine IP im Internet zu erfahren
; Autoren: Falko, Nicolaus und TS-Soft

Procedure.s GetMyInternetIP()
  ; TempPfad ermitteln
  Buffer.s = Space(#MAX_PATH)
  GetTempPath_(#MAX_PATH, @Buffer)
  ; IP-File downloaden
  Buffer + "ip.txt"
  If URLDownloadToFile_(0, @"http://www.whatismyip.com", @Buffer, 0, 0) = 0
    ; IP-File einlesen
    File = OpenFile(#PB_Any, Buffer)
    If File
      While Eof(File) = 0
        ; Zeile für Zeile einlesen und nach IP Filtern
        IPString.s + ReadString()
        If IPString
          temp_pos_beforIP = FindString(IPString,"Your ip is ",1)
          If temp_pos_beforIP
            temp_pos_afterIP = FindString(IPString," WhatIsMyIP",1)
            If temp_pos_afterIP
              ip.s = Mid(IPString,temp_pos_beforIP+Len("Your ip is "),temp_pos_afterIP-temp_pos_beforIP-Len("Your ip is "))
              If ip
                Break
              EndIf
            EndIf
          EndIf
        EndIf
      Wend
      CloseFile(File)
      DeleteFile(Buffer)
    EndIf
  EndIf
  If ip > ""
    ProcedureReturn ip
  EndIf
  ProcedureReturn "0.0.0.0"
EndProcedure
Debug  GetMyInternetIP()
Viel spaß

Verfasst: 08.02.2005 16:20
von DarkDragon
Toll, aber sowas hab ich sogar schon mit Linuxkompatibilität gebastelt, habs allerdings nichtmehr.

Verfasst: 08.02.2005 16:26
von Falko
Darum ist's ja hier, damit nichts verloren geht :mrgreen:

Verfasst: 08.02.2005 16:28
von nicolaus
DarkDragon hat geschrieben:Toll, aber sowas hab ich sogar schon mit Linuxkompatibilität gebastelt, habs allerdings nichtmehr.
Erstens: ich habe EXTRA dazu geschrieben das es nur eine möglichkeit und ein beispiel ist wie man es machen kann.

Zweitens: Wolltest du uns damit sagen das du unordentlich bist ?

Verfasst: 08.02.2005 16:55
von orange-blue
Zweitens: Wolltest du uns damit sagen das du unordentlich bist ?
:lol:
auch nicht schlecht :D

Verfasst: 08.02.2005 16:56
von DarkDragon
Nein, also doch, naja ich hab halt meinen eigenen Free-WebHost benutzt(I-Networx). Hehe, dann hat der irgendwann HTTP bei mir zugemacht aber FTP nicht. Man muss das ding durch 1 € Freischalten, war mir aber zu teuer da ich ja schon nen richtigen WebHost hab.

Verfasst: 08.02.2005 21:29
von bluejoke
gefällt mir auch ganz gut, aber ich war mal vor nem Jahr auf der IP-Seite (www.whatismyip.com) und die hat meinem Browser da nicht geantwortet.

Deswegen hab ich mir selbst mein IP-Teil gebastelt (PHP), das sich gerne jeder auf seinen eigenen Server laden kann:

Code: Alles auswählen

<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Bei Windows könnt ihr das einfach mit der API Downloaden, der einzige String den ihr dann bekommt ist ja dann scho die IP



Simon

Verfasst: 09.02.2005 10:33
von dige
Geht der Seite von dyndns.org gehts noch einfacher ;-)

Code: Alles auswählen

Procedure.l DownloadToMem ( URL.s, *lpRam, ramsize.l )
  Protected agent.s, hINet.l, hData.l, bytes.l
  agent = "Mozilla/4.0 (compatible; ST)"
  hINet = InternetOpen_(@agent,0,0,0,0)
  hData = InternetOpenURL_(hINet,@URL,"",0,$84000000,0 )
  If hData > 0 : InternetReadFile_ ( hData, *lpRam, ramsize, @bytes ) : Else : bytes = -1 : EndIf
  InternetCloseHandle_ (hINet) : InternetCloseHandle_ (hFile) :  InternetCloseHandle_ (hData)
  ProcedureReturn bytes
EndProcedure

IP.s = Space ( 256 )
If DownloadToMem ( "http://checkip.dyndns.org", @IP, 256 ) > 0
  Debug Trim(StringField( StringField( IP, 2, ":" ), 1, "<" ))
EndIf
cya dige

Verfasst: 09.02.2005 11:12
von DarkDragon
dige hat geschrieben:Geht der Seite von dyndns.org gehts noch einfacher ;-)
Auch gut, aber "Deutsch der kann, kann kommuniziert einfach."

Verfasst: 09.02.2005 11:15
von dige
DarkDragon hat geschrieben:Auch gut, aber "Deutsch der kann, kann kommuniziert einfach."
Hehe :mrgreen: wohl das ist Restalkohol der vom Fasching .. *hicks*