Results 1 to 8 of 8

Thread: Connected to Internet OR NOT Connected?

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Aug 2000
    Posts
    154

    Question Connected to Internet OR NOT Connected?

    Hey all,

    I need to find out if the user is connected to the Internet. I've
    looked at a ton of examples. Most of them have drawbacks to
    using them because they don't work for every type of
    connection. So I have an idea I want to clarify.....

    It is my understanding that if I retrieve the local IP Address,
    and it is 127.0.0.1, then the user is NOT connected. Right?
    If so, is this always the case? I mean, is every computers
    local IP Address 127.0.0.1 when they are not connected?

    If all of this is right, why couldn't I use the following code...
    (I don't know where I got this, so if it is yours...Thanks)

    ********************************************
    ********************************************

    'Put this in a Module:
    Option Explicit

    Public Const MIN_SOCKETS_REQD As Long = 1
    Public Const WS_VERSION_REQD As Long = &H101
    Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Public Const SOCKET_ERROR As Long = -1
    Public Const ERROR_SUCCESS = 0&
    Public Const WSADESCRIPTION_LEN = 257
    Public Const WSASYS_STATUS_LEN = 129
    Public Const MAX_WSADescription = 256
    Public Const MAX_WSASYSStatus = 128

    Public Type WSAData
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Integer
    wMaxUDPDG As Integer
    dwVendorInfo As Long
    End Type

    Type WSADataInfo
    wVersion As Integer
    wHighVersion As Integer
    szDescription As String * WSADESCRIPTION_LEN
    szSystemStatus As String * WSASYS_STATUS_LEN
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpVendorInfo As String
    End Type

    Public Type HOSTENT
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLen As Integer
    hAddrList As Long
    End Type

    Declare Function WSAStartupInfo Lib "WSOCK32" Alias "WSAStartup" (ByVal wVersionRequested As Integer, lpWSADATA As WSADataInfo) As Long
    Declare Function WSACleanup Lib "WSOCK32" () As Long
    Declare Function WSAGetLastError Lib "WSOCK32" () As Long
    Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
    Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
    Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long
    Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

    Public Function GetIPAddress() As String
    Dim sHostName As String * 256
    Dim lpHost As Long
    Dim HOST As HOSTENT
    Dim dwIPAddr As Long
    Dim tmpIPAddr() As Byte
    Dim I As Integer
    Dim sIPAddr As String
    If Not SocketsInitialize() Then
    GetIPAddress = ""
    Exit Function
    End If
    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPAddress = ""
    MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If
    sHostName = Trim$(sHostName)
    lpHost = gethostbyname(sHostName)
    If lpHost = 0 Then
    GetIPAddress = ""
    MsgBox "Windows Sockets are not responding. " & "Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If
    CopyMemoryIP HOST, lpHost, Len(HOST)
    CopyMemoryIP dwIPAddr, HOST.hAddrList, 4
    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen
    For I = 1 To HOST.hLen
    sIPAddr = sIPAddr & tmpIPAddr(I) & "."
    Next
    GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
    SocketsCleanup
    End Function

    Public Function GetIPHostName() As String
    Dim sHostName As String * 256
    If Not SocketsInitialize() Then
    GetIPHostName = ""
    Exit Function
    End If
    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPHostName = ""
    MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If
    GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
    SocketsCleanup
    End Function

    Public Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H100 And &HFF&
    End Function

    Public Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
    End Function

    Public Sub SocketsCleanup()
    If WSACleanup() <> ERROR_SUCCESS Then
    MsgBox "Socket error occurred in Cleanup."
    End If
    End Sub

    Public Function SocketsInitialize() As Boolean
    Dim WSAD As WSAData
    Dim sLoByte As String
    Dim sHiByte As String
    If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
    MsgBox "The 32-bit Windows Socket is not responding."
    SocketsInitialize = False
    Exit Function
    End If
    If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
    MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
    SocketsInitialize = False
    Exit Function
    End If
    If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
    sHiByte = CStr(HiByte(WSAD.wVersion))
    sLoByte = CStr(LoByte(WSAD.wVersion))
    MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
    SocketsInitialize = False
    Exit Function
    End If
    'must be OK, so lets do it
    SocketsInitialize = True
    End Function



    'Put this in the Form:

    Private Sub Command1_Click()
    Text1.Text = GetIPAddress
    End Sub

    ********************************************
    ********************************************

    So, the point is...if the returned local IP Address is 127.0.0.1,
    then I know they are not connected, and can tell them they need
    to be connected to do what I want them to do.

    I hope this makes sense. I don't even know anymore because
    I've been at this for about 6 hours straight.

    Anyway, I sure would appreciate you guys checking this out, and
    telling me what you think.

    Thanks in advance,
    Ron

  2. #2
    Banned Michael_Kamen's Avatar
    Join Date
    May 2001
    Location
    The Netherlands
    Posts
    1,180

    Re: Connected to Internet OR NOT Connected?

    Originally posted by rdcody
    It is my understanding that if I retrieve the local IP Address,
    and it is 127.0.0.1, then the user is NOT connected. Right?
    If so, is this always the case? I mean, is every computers
    local IP Address 127.0.0.1 when they are not connected?
    Ron
    I might be mistaken, but isn't 127.0.1 just the LocalHost?

  3. #3

    Thread Starter
    Addicted Member
    Join Date
    Aug 2000
    Posts
    154
    Hey Michael,

    I know I probably didn't explain myself very well.

    Yes, I think that's the point ... IF every computers localhost is
    127.0.0.1.

    If you would run that example code I posted while your
    connected to the Internet, the IP Address is different. When you
    run it while your NOT connected to the Internet, the IP Address
    is 127.0.0.1.

    So...I guess my main two questions are...

    Is every computers localhost IP Address 127.0.0.1?

    And...

    Do you see any problem with the above code that would
    cause it not to work on every computer.

    Thanks,
    Ron

  4. #4
    Frenzied Member
    Join Date
    Jul 2002
    Posts
    1,370
    Your assumptions are wrong. In a LAN, systems are assigned permanent IP's. I have one 98 box, and can log on to it without connecting to the LAN - physically disconnected. MY IP address
    Is still 10.bla.bla.bla.... My XP boxes can't let me log on without a LAN connection.

    Generally only for dialup, and NOT for every single ISP out there, are local IP addresses undefined.
    Last edited by jim mcnamara; Oct 21st, 2002 at 03:47 PM.

  5. #5
    Frenzied Member Shawn N's Avatar
    Join Date
    Dec 2001
    Location
    Houston
    Posts
    1,631
    VB Code:
    1. Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As Long
    2. Private Sub Form_Load()
    3.     'KPD-Team 2001
    4.     'URL: [url]http://www.allapi.net/[/url]
    5.     'E-Mail: [email][email protected][/email]
    6.     'InetIsOffline returns 0 if you're connected
    7.     MsgBox "Are you connected to the internet? " + CStr(CBool(Not (InetIsOffline(0)))), vbInformation
    8. End Sub
    Please rate my post.

  6. #6
    Frenzied Member ice_531's Avatar
    Join Date
    Aug 2002
    Location
    Sitting w/ Bob Status: -Next -To- Null- Friend: Philip
    Posts
    1,152

    Well

    I know theres many examples of internet connection right here in the API forum... and also i remember seeing something about it at www.vbcode.com
    :::`DISCLAIMER`:::
    Do NOT take anything i have posted to be truthful in any way, shape or form.
    Thank You!

    --------------------------------
    "Never heard about "hiking" poles. I usualy just grab a stick from the nature, and use that as a pole." - NoteMe
    "Finaly I can look as gay as I want..." - NoteMe
    Languages: VB6, BASIC, Java, C#. C++

  7. #7
    Fanatic Member petrus's Avatar
    Join Date
    May 2002
    Location
    pBytes[sizeof(pBytes)/2]
    Posts
    553
    Originally posted by rdcody
    Hey Michael,

    I know I probably didn't explain myself very well.

    Yes, I think that's the point ... IF every computers localhost is
    127.0.0.1.

    If you would run that example code I posted while your
    connected to the Internet, the IP Address is different. When you
    run it while your NOT connected to the Internet, the IP Address
    is 127.0.0.1.

    So...I guess my main two questions are...

    Is every computers localhost IP Address 127.0.0.1?

    And...

    Do you see any problem with the above code that would
    cause it not to work on every computer.

    Thanks,
    Ron
    Well, It won't run very well on non-windows computers.
    ICQ: 128716725

  8. #8
    Frenzied Member Shawn N's Avatar
    Join Date
    Dec 2001
    Location
    Houston
    Posts
    1,631
    Originally posted by petrus
    Well, It won't run very well on non-windows computers.
    No VB coding will run well on non-Windows computers.
    Please rate my post.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width