öffentliche IP-Adresse ermitteln
öffentliche IP-Adresse ermitteln
Ich nochmal, ich würde mal gern wissen, ob es möglich ist mittels PureBasic die öffentliche IP-Adresse zu ermitteln.
Also nicht: 192.168.2.1
Sondern: 84.174.XXX.XXX
Also nicht: 192.168.2.1
Sondern: 84.174.XXX.XXX
Zuletzt geändert von Sunny am 11.06.2009 16:50, insgesamt 1-mal geändert.
du kannst eine Website auslesen, wo mit php die IP geschrieben wird zB:
http://data.unionbytes.de/ip.php
auslesen kannst du zB so:
http://data.unionbytes.de/ip.php
auslesen kannst du zB so:
Code: Alles auswählen
Procedure.s DownloadToString(URL$, TimeOut=5000)
Protected Event, Time, Size, String$
Protected BufferSize = $1000
Protected *Buffer = AllocateMemory(BufferSize)
Protected ServerName$ = GetURLPart(URL$, #PB_URL_Site)
Protected ConnectionID = OpenNetworkConnection(ServerName$, 80)
If ConnectionID
SendNetworkString(ConnectionID, "GET "+URL$+" HTTP/1.0"+#LFCR$+#LFCR$)
Time = ElapsedMilliseconds()
Repeat
Delay(10)
Event = NetworkClientEvent(ConnectionID)
Until Event Or ElapsedMilliseconds()-Time > TimeOut
If Event
Repeat
Size = ReceiveNetworkData(ConnectionID, *Buffer, BufferSize)
String$ + PeekS(*Buffer, Size, #PB_Ascii)
Until Not Size
Inhalt = FindString(String$, #LFCR$, 1)
If Inhalt
ProcedureReturn Mid(String$,Inhalt+3)
Else
ProcedureReturn String$
EndIf
EndIf
EndIf
EndProcedure
InitNetwork()
Debug DownloadToString("http://data.unionbytes.de/ip.php")
Zuletzt geändert von STARGÅTE am 09.07.2010 16:09, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Oder in kurz...
EDIT: Ich habe den Code nochmal überarbeitet, so daß man ihn auch an andere Webadressen anpassen kann. Bei dem ursprünglichen Post wurden leider auch nicht alle Stellen der IP Adresse zurückgegeben (12 statt 15).
Bei der Version oben muß in sMarker1 und sMarker2 quasi nur noch ein Stückchen vom gelesenen String (sHeader) eingetragen werden, der sich direkt vor der IP und nach der IP befindet. Dazu am besten den Kommentar vor dem ersten Debug rausnehmen und sHeader analysieren.
Code: Alles auswählen
EnableExplicit
Define sHeader.s, sMarker1.s, sMarker2.s, lIPPos.i, lIPLen.i
InitNetwork()
sHeader = GetHTTPHeader("http://checkip.dyndns.org")
; Debug sHeader
sMarker1 = "Current IP Address:"
sMarker2 = "<"
lIPPos = FindString(sHeader, sMarker1, 1) + Len(sMarker1)
lIPLen = FindString(sHeader, sMarker2, lIPPos) - lIPPos
Debug Mid(sHeader, lIPPos, lIPLen)
Bei der Version oben muß in sMarker1 und sMarker2 quasi nur noch ein Stückchen vom gelesenen String (sHeader) eingetragen werden, der sich direkt vor der IP und nach der IP befindet. Dazu am besten den Kommentar vor dem ersten Debug rausnehmen und sHeader analysieren.
Zuletzt geändert von Kurzer am 11.06.2009 21:35, insgesamt 2-mal geändert.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Das haut zwar bei mir irgendwie nich hin aber die Idee an sich is gut, ich hab das zuerst so gelöst:
allerdings gibt mein Avira ne Warnung raus, daher hab ich es danach nochmal so abgeändert:
Dazu sagt Avira bei mir nichts.
Dankeschön für deine Hilfe.
Code: Alles auswählen
URLDownloadToFile_(0,"http://guttgame.q-soft.ch/ip.php","C:\ip.txt",0,0)
If x=1
EndIf
OpenFile(0,"C:\ip.txt")
Debug ReadString(0)
CloseFile(0)
End
Code: Alles auswählen
URLDownloadToFile_(0,"http://guttgame.q-soft.ch/ip.php","C:\ip.txt",0,0)
If x=1
EndIf
OpenFile(0,"C:\ip.txt")
ip$=ReadString(0)
MessageRequester("IP-Adresse",ip$)
CloseFile(0)
End
Dankeschön für deine Hilfe.
Zuletzt geändert von Sunny am 11.06.2009 16:50, insgesamt 1-mal geändert.
Haut bei mir auch nich hin, ich glaub meine Version von PureBasic is schon zu veraltet.Oder in kurz...
Code: Alles auswählen
InitNetwork() Header$ = GetHTTPHeader("http://checkip.dyndns.org") Debug Mid(Header$, FindString(Header$, "Current IP Address:", 1) + 20, 12)
Zuletzt geändert von Sunny am 11.06.2009 16:50, insgesamt 1-mal geändert.
Was genau heißt "haut nicht hin"?
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
wäre gut wenn du dann in deine signatur schreiben würdest welche PB-Version du besitzt.
Oder noch besser gleich zur neusten updatest
Oder noch besser gleich zur neusten updatest
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
http://www.purebasic.fr/german/viewtopic.php?t=15953Sunny hat geschrieben:Mal so nebenbei, wie krieg ich eigentlich diese hübschen Bildchen in meiner Signatur rein, die zeigen welche PB-Version ich hab oder ob ich Windows XP oder Vista hab und Welches SP usw.
Win11 x64 | PB 6.20