Die eigene IP ermitteln

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Die eigene IP ermitteln

Beitrag 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ß
Zuletzt geändert von nicolaus am 08.02.2005 16:23, insgesamt 1-mal geändert.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Toll, aber sowas hab ich sogar schon mit Linuxkompatibilität gebastelt, habs allerdings nichtmehr.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Darum ist's ja hier, damit nichts verloren geht :mrgreen:
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag 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 ?
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Zweitens: Wolltest du uns damit sagen das du unordentlich bist ?
:lol:
auch nicht schlecht :D
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Beitrag 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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

dige hat geschrieben:Geht der Seite von dyndns.org gehts noch einfacher ;-)
Auch gut, aber "Deutsch der kann, kann kommuniziert einfach."
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Beitrag von dige »

DarkDragon hat geschrieben:Auch gut, aber "Deutsch der kann, kann kommuniziert einfach."
Hehe :mrgreen: wohl das ist Restalkohol der vom Fasching .. *hicks*
"Papa, ich laufe schneller - dann ist es nicht so weit."
Antworten