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

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.

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
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]