Re: How can I obtain my internet address?
Posted: Mon Jan 11, 2016 2:12 am
heartbone that looks like the Get IP Address site we've all been waiting for heehee, all the others can move to secondary now 

http://www.purebasic.com
https://www.purebasic.fr/english/
I'll set the function to randomly access that new site 4/7 the time, and randomly retrieve from one the other three sites at a rate of 1 of 7 calls.Keya wrote:heartbone that looks like the Get IP Address site we've all been waiting for heehee, all the others can move to secondary now
Code: Select all
Procedure.S GetExternalIPAddress(TIMEOUT)
; RETURNS A STRING CONTAINING THE CURRENT IPv4 EXTERNAL ADDRESS.
; A PREVIOUS CALL TO InitNetwork() IS REQUIRED.
; WILL STOP CHECKING WEBSITES AFTER TIMEOUT (IN MILLISECONDS).
; NURL GETS SET TO RANDOM INTEGER FROM 1 THROUGH 7.
; NURL=1 EXTRACT IP ADDRESS FROM http://ip.gwhois.org/
; NURL=2 EXTRACT IP ADDRESS FROM http://checkip.dyndns.org
; NURL=3 EXTRACT IP ADDRESS FROM http://www.realip.info/api/p/realip.php
; NURL=4,5,6,7 EXTRACT IP ADDRESS FROM http://api.ipify.org/
; ON AVERAGE api.ipify.org IS USED FOUR TIMES IN SEVEN CALLS.
NURL= Random(6)+ 1 : START= NURL
EXTADDR$= "" : TEMPFILE$= GetTemporaryDirectory()+"IPADDRESS"
If TIMEOUT < 1 : TIMEOUT= 10 : EndIf
STOPTIME= ElapsedMilliseconds()+ TIMEOUT
Repeat
If ElapsedMilliseconds() < STOPTIME
Select NURL
Case 1
If ReceiveHTTPFile("http://ip.gwhois.org/",TEMPFILE$)
ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
EndIf
Case 2
If ReceiveHTTPFile("http://checkip.dyndns.org",TEMPFILE$)
ReadFile(1,TEMPFILE$) : HEADER$= ReadString(1)
STIND= FindString(HEADER$, "Current IP Address:", 1)+ 20
IND= FindString(HEADER$,"</body></html>",1)- STIND
If IND > 0 : EXTADDR$ = Mid(HEADER$,STIND,IND) : EndIf
EndIf
Case 3
If ReceiveHTTPFile("http://www.realip.info/api/p/realip.php",TEMPFILE$)
ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
TBUFF$= Mid(EXTADDR$,8) : EXTADDR$= Mid(TBUFF$,1,Len(TBUFF$)-2)
EndIf
Case 4, 5, 6, 7
If ReceiveHTTPFile("http://api.ipify.org/",TEMPFILE$)
ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
EndIf
EndSelect
If IsFile(1) : CloseFile(1) : DeleteFile(TEMPFILE$) : EndIf
If CountString(EXTADDR$,".")<>3 Or Len(EXTADDR$)<7 Or Len(EXTADDR$)>15 : EXTADDR$= "" : EndIf
EndIf
NURL +1 : If NURL=8 : NURL= 1 : EndIf
Until EXTADDR$<>"" Or NURL=START
ProcedureReturn EXTADDR$
EndProcedure