Jump to content

Recommended Posts

Posted (edited)

I do not know why, but I think this function to get the external IP address is a bit faster than _GetIP included in "inet.au3"at least on my computer is a bit faster.

The website where I get the IP is ipaddress.net16.net.

I hope it's useful. :)

Func GetIP()
$IP=InetRead("http://ipaddress.net16.net/ip.php",1)
$IP=BinaryToString($IP)

$IP=StringTrimLeft($IP,12)

$end=StringInStr($IP,"</body></html>")-1

$IP=StringLeft($IP,$end)
Return $IP
EndFunc


MsgBox(4096, "",  GetIP()  )
Edited by Zane
Posted (edited)

Also check out my improved version of _GetIP() in my Signature! As I found that the current _GetIP() only works with one out of the two sites.

Maybe use SRE instead.

Func _GetIP()
    Local $bRead, $sRead, $sReturn
    $bRead = InetRead("http://ipaddress.net16.net/")
    $sRead = BinaryToString($bRead)
    $sReturn = StringRegExp($sRead, '(?s)(?i)<td id="ipaddress">(.*?)</td>', 3)
    If Not @error Then Return $sReturn[0]
    Return SetError(1, 1, -1)
EndFunc   ;==>_GetIP
Edited by guinness

UDF List:

  Reveal hidden contents

Updated: 22/04/2018

Posted (edited)

My mistake, the website is "ipaddress.net16.net" but I get the IP from "ipaddress.net16.net/ip.php", so I think the function should be:

Func GetIP()
    Local $bRead, $sRead, $sReturn
    $bRead = InetRead("http://ipaddress.net16.net/ip.php",1)
    $sRead = BinaryToString($bRead)
    $sReturn = StringRegExp($sRead, '(?s)(?i)<body>(.*?)</body>', 3)
    If Not @error Then Return $sReturn[0]
    Return SetError(1, 1, -1)
EndFunc   ;==>GetIP

Posted Image

Edited by Zane
Posted (edited)

Quick! And this is the one I created using the same sites in _GetIP() but using different and improved code. Its the same time as yours.

Func _GetIP()
    Local $bRead, $sRead, $sReturn
    $bRead = InetRead("http://www.whatismyip.com/automation/n09230945.asp") ; http://forum.whatismyip.com/f14/our-automation-rules-t241/
    $sRead = BinaryToString($bRead)
    If Not @error Then Return $sRead

    $bRead = InetRead("http://checkip.dyndns.org/")
    $sRead = BinaryToString($bRead)
    $sReturn = StringRegExp($sRead, '(?s)(?i)<body>Current IP Address: (.*?)</body>', 3)
    If Not @error Then Return $sReturn[0]
    Return SetError(1, 1, -1)
EndFunc   ;==>_GetIP

Note: I just checked with the original _GetIP() and got 2.6secs not the 6 you had!

Edited by guinness

UDF List:

  Reveal hidden contents

Updated: 22/04/2018

Posted (edited)
  Quote

I just checked with the original _GetIP() and got 2.6secs not the 6 you had!

That's weird, maybe because I have a 3G internet connection Edited by Zane
Posted

I get it returned under 2 seconds with this method, though it could certainly be connection related.

The test IP is what good ole 4.4.4.4 resolves to.

$IP = _GetExtIP ()
msgbox (0, '' , $IP)

Func _GetExtIP ()

runwait ("cmd /c ping -r 1 -n 1 4.68.127.129 > c:\testPING.txt")

If FileExists ("c:\testPING.txt") Then
$pStr = FileRead ("c:\testPING.txt")

$filterArray = StringRegExp ($pStr , "Route:\s(\d+)\.(\d+)\.(\d+)\.(\d+)\s" , 3)

$IPstring = $filterArray[0] & "." & $filterArray[1] & "." & $filterArray[2] & "." & $filterArray[3]

Return $IPstring

Else

msgbox (0, '' , "ping error")

endif
exit

EndFunc

  Reveal hidden contents

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...