Seite 2 von 3

Verfasst: 09.02.2005 11:19
von DarkDragon
dige hat geschrieben:
DarkDragon hat geschrieben:Auch gut, aber "Deutsch der kann, kann kommuniziert einfach."
Hehe :mrgreen: wohl das ist Restalkohol der vom Fasching .. *hicks*
Nicht sauft soviel oder Krankenhaus warten auf dich und Renovierung des Magens :P . (Ich nichtmehr wegbekomm diese Redensweise, dige danke)

Zurück zum Thema: Ich hoff nur dass diese ganzen IP Server nichtmehr offline gehen.
:mrgreen:

Verfasst: 09.02.2005 16:19
von bluejoke
Wenn man seinen eigenen Server verwendet (hauptsache ist halt, das der IP-Extrahier-Algo der gleiche ist), kann man die Adresse ja einfach in ner ini angeben oder so

Verfasst: 10.02.2005 07:46
von nicolaus
ok da ja server mal offline gehen können oder die seite komplet von der bildfläche verschwinden kann und es somit zu probs in einem Programm führen kann hab ich mich mal eben hingesetzt und ne kleine procedure geschrieben die die ip-adresse auch so ermitteln kann ohne extra php-script auf nem server oder so.

der code geht nur wenn ihr NICHT über einen router oder Proxy online geht.

Code: Alles auswählen

InitNetwork()
Structure HOSTENT 
  h_name.l 
  h_aliases.l 
  h_addrtype.w 
  h_length.w 
  h_addr_list.l 
EndStructure 

ProcedureDLL.s GetIPbyHost(Hostname.s)
  TheIPAdress.s 
  pHostinfo = gethostbyname_(Hostname) 
  CopyMemory(pHostinfo, hostinfo.HOSTENT, SizeOf(HOSTENT)) 
  If hostinfo\h_addrtype <> #AF_INET 
    MessageRequester("Info","A non-IP address was returned", 0) 
  Else 
    While PeekL(hostinfo\h_addr_list+AdressNumber * 4) 
      ipAddress = PeekL(hostinfo\h_addr_list + AdressNumber * 4) 
      TheIPAdress = StrU(PeekB(ipAddress), 0) + "." + StrU(PeekB(ipAddress+1), 0) + "." +StrU(PeekB(ipAddress+2), 0) + "." + StrU(PeekB(ipAddress+3), 0) 
      AdressNumber + 1 
    Wend 
  EndIf 
ProcedureReturn TheIPAdress 
EndProcedure
Debug "Your IP is: "+GetIPbyHost(Hostname())  
viel spaß damit
Gruß Nico

Verfasst: 10.02.2005 08:10
von 125
Dein 2 tes Bsp. giebt meine Lokale IP aus net meine INet IP

Verfasst: 10.02.2005 08:24
von nicolaus
haste du ne ganz normale DFÜ-verbindung auf gemacht?

du kannst ja mal noch in die while-schleife die zeile

Code: Alles auswählen

      Debug TheIPAdress
nach der zeile

Code: Alles auswählen

TheIPAdress = StrU(PeekB(ipAddress), 0) + "." + StrU(PeekB(ipAddress+1), 0) + "." +StrU(PeekB(ipAddress+2), 0) + "." + StrU(PeekB(ipAddress+3), 0) 
setzen und schauen wieviele IP´s dir ausgegeben werden.

Verfasst: 10.02.2005 08:42
von 125
Ne, ich sitz im Lan und hab nen DSL Router ;)

Verfasst: 10.02.2005 08:46
von nicolaus
ok ich denke mal mit dem router wird das nich gehen sorry. da müßte man die IP direkt aus dem router auslesen wenn man nich über die scripts gehen will.

Verfasst: 10.02.2005 09:40
von dige
@Nicolaus: Dein Beispiel macht keinen Sinn, da es die eigene lokale IP
ermittelt. Es ging aber darum herauszufinden welche IP letztlich nach
draussen geht ( nach diversen Routerm Proxys etc. )

Bei der DFÜ Einwahl erhälst Du eine dynamische IP zugewiesen,
die du mit PB Mitteln oder via API ermitteln kannst,
aber auch diese IP kann auch dem weg "nach draussen" ( zum Bsp. bei AOL)
nochmal gemappt werden...

Verfasst: 10.02.2005 09:44
von nicolaus
das beispiel geht soweit super wenn du nicht hinter nem router oder proxy bist (also normale einwahl mit DFÜ und sonst nix).
es ist klar das es nicht geht wenn du hinter einem router oder so sitzt und das hatte ich auch in dem 2. beispiel nich gesaagt das es da geht oder?

Code erweitert

Verfasst: 05.03.2006 23:54
von Nalfein
Hi!!

Hab' den Code von Falco um eine Kleinigkeit verändert, weil die von What's my IP anscheinend das format des Textes geändert haben, und es wird ja Suche nach Text benutzt...

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() ; wäre = statt + nicht besser? Das hier kann recht groß werden... funktioniert jedenfalls...
        ; wenn er eh jede Zeile erneut testet, ob er inzwischen die IP gelesen hat...
        If IPString
          temp_pos_beforIP = FindString(LCase(IPString),"your ip is ",1)
          If temp_pos_beforIP
            temp_pos_afterIP = FindString(IPString,"<",temp_pos_beforIP) ;das erste Zeichen nach der IP ist das < eines tags...
            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()
[/code]