Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Feature] Getting your actual IP *edited*
#1
So, I just wrote up my own fine ass function for getting your actual IP. At first it was just 1 line of code, and I'm sure you've seen code using INet before to get your actual IP...but none like this, good sir!

First, open your server:

In modGlobals, add this:

Code:
Public ACTUAL_IP As String
Public IP_Source As String

Then in Sub UpdateCaption, replace the:

Code:
frmServer.Socket(0).LocalIP

With:

Code:
ACTUAL_IP

Then in InitServer (before the final SetStatus message) add this:

Code:
IP_Source = "org"
ACTUAL_IP = GetActualServerIP

What I did with the IP_Source is basically let you choose between using whatismyip.com or whatismyip.org (sometimes one's down). Either make IP_Source = "com" or "org". In my engine I have this load from an INI file...but doing an INI file is a totally different tutorial.

Then go to Project > Components. Look for Microsoft Internet Transfer Control 6.0 and check it and click OK.

Now open frmServer and add the INet control anywhere you want and make sure it's named: INet. Then click on your new INet control and in the properties box make sure Index is set to 0 (it's blank by default).

And...here's the magic itself. Add this to modGeneral (or any other module is fine):

[code]''''''''''''''''''''''''''''''''''''''''''''
' Function written from scratch by: GIAKEN '
''''''''''''''''''''''''''''''''''''''''''''
Public Function GetActualServerIP() As String
Dim RetryValue As Long

Load frmServer.INet(1)

Retry:

'after 2 seconds time the request out
frmServer.INet(RetryValue).RequestTimeout = 2

Select Case IP_Source
Case "org"
Call SetStatus("Retrieving actual IP from whatismyip.org...")

On Error Resume Next
GetActualServerIP = frmServer.INet(RetryValue).OpenURL("http://whatismyip.org", icString)
On Error GoTo ErrHandler

Case "com"
Call SetStatus("Retrieving actual IP from whatismyip.com...")

On Error Resume Next
GetActualServerIP = frmServer.INet(RetryValue).OpenURL("http://whatismyip.com/automation/n09230945.asp", icString)
On Error GoTo ErrHandler

End Select

'if the IP is blank, then handle it as an error
If LenB(GetActualServerIP) = 0 Then GoTo ErrHandler

Call SetStatus("Successfully retrieved actual IP.")
Exit Function

ErrHandler:

'clear the RTE error just in case so we can properly continue
Err.Clear

Call SetStatus("Failed to retrieve actual IP address: timed out.")

frmServer.INet(RetryValue).Cancel
RetryValue = RetryValue + 1

If RetryValue
Reply
#2
Really buggy, I don't recommend using this way. Too slow...


Just kidding GIAKEN, it looks good.
Reply
#3
Anybody having any problems?
Reply
#4
GIAKEN Wrote:Anybody having any problems?

Worked fine for me, Thank you. Smile
Reply
#5
You're welcome Big Grin
Reply
#6
Just worked on the GetActualServerIP function, redoing the error handling. (it was bugging if it timed out twice)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)