![]() |
[Feature] Getting your actual IP *edited* - Printable Version +- Mirage Source (https://mirage-engine.uk/forums) +-- Forum: Mirage Source (Nostalgia) (https://mirage-engine.uk/forums/forumdisplay.php?fid=61) +--- Forum: Archive (2006-2011) (https://mirage-engine.uk/forums/forumdisplay.php?fid=18) +---- Forum: Source Code Development (https://mirage-engine.uk/forums/forumdisplay.php?fid=51) +----- Forum: Mirage Source 4 (Visual Basic 6) (https://mirage-engine.uk/forums/forumdisplay.php?fid=44) +------ Forum: Tutorials (https://mirage-engine.uk/forums/forumdisplay.php?fid=13) +------ Thread: [Feature] Getting your actual IP *edited* (/showthread.php?tid=2766) |
[Feature] Getting your actual IP *edited* - GIAKEN - 24-04-2009 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 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" 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 Re: Getting your actual IP - Nean - 24-04-2009 Really buggy, I don't recommend using this way. Too slow... Just kidding GIAKEN, it looks good. Re: Getting your actual IP - GIAKEN - 24-04-2009 Anybody having any problems? Re: Getting your actual IP - Jared - 24-04-2009 GIAKEN Wrote:Anybody having any problems? Worked fine for me, Thank you. ![]() Re: Getting your actual IP - GIAKEN - 25-04-2009 You're welcome ![]() Re: [Feature] Getting your actual IP *edited* - GIAKEN - 11-05-2009 Just worked on the GetActualServerIP function, redoing the error handling. (it was bugging if it timed out twice) |