Results 1 to 9 of 9

Thread: How can I find my internet IP?

  1. #1
    zchoyt
    Guest

    Thumbs up How can I find my internet IP?

    I am trying to find my Internet IP (is that the gateway address?). I have messed around with the winsock control, but I can only get the Local IP and Remote Host IP.

    Is there another control that would do the trick? Or is there a call in the API?

    I am stuck. Any help would be great!!
    Thanks

  2. #2
    Frenzied Member
    Join Date
    Aug 2000
    Location
    O!
    Posts
    1,177
    Other than your PC's IP address, what could you be referring to?

  3. #3
    zchoyt
    Guest
    There is a local IP (LAN), say 192.168.0.3, and then there is the IP for the internet(for me usually 63.227.***.***). I can find the Local IP, but am haveing trouble finding the other one.

  4. #4
    Frenzied Member
    Join Date
    Aug 2000
    Location
    O!
    Posts
    1,177
    Originally posted by zchoyt
    There is a local IP (LAN), say 192.168.0.3, and then there is the IP for the internet(for me usually 63.227.***.***). I can find the Local IP, but am haveing trouble finding the other one.
    192.168.0.x is a private non-routable Class C range of addresses. As for the other address, are you behind a firewall or some sort of proxy server?

    I use the same 192.168 addressing scheme on my home network. I have a gateway between the cable modem and the switch. The WAN side of the gateway has an IP address assigned (via DHCP) by my ISP. Is this the address you are trying to obtain? I have been able to ping the gateway from outside my network by using the name assigned to me by my ISP. Perhaps you can try that approach.

  5. #5
    Lively Member
    Join Date
    Jan 1999
    Location
    Karjalohja, Finland
    Posts
    123
    Try this:

    Option Explicit

    Public Const MAX_WSADescription = 256
    Public Const MAX_WSASYSStatus = 128
    Public Const ERROR_SUCCESS As Long = 0
    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 MIN_SOCKETS_REQD As Long = 1
    Public Const SOCKET_ERROR As Long = -1

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

    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


    Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long

    Public Declare Function WSAStartup Lib "WSOCK32.DLL" _
    (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long

    Public Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long

    Public Declare Function gethostname Lib "WSOCK32.DLL" _
    (ByVal szHost As String, ByVal dwHostLen As Long) As Long

    Public Declare Function gethostbyname Lib "WSOCK32.DLL" _
    (ByVal szHost As String) As Long

    Public Declare Sub CopyMemory 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
    CopyMemory HOST, lpHost, Len(HOST)
    CopyMemory dwIPAddr, HOST.hAddrList, 4
    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemory 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
    SocketsInitialize = True
    End Function

  6. #6
    Frenzied Member monte96's Avatar
    Join Date
    Sep 2000
    Location
    Somewhere in AZ
    Posts
    1,379
    Or if your just looking to get the IP and not looking to programmatically get it, run winipcfg.exe
    oOOo--oOOo
    __/\/\onte96
    oOOo--oOOo
    Senior Programmer/Analyst
    MCP
    [email protected]
    [email protected]


    Your results may vary.. some restrictions may apply.. pricing and participation may vary.. not available in all states.. professional driver closed course..quantities limited..

  7. #7
    zchoyt
    Guest
    I need to dump it into a variable.

  8. #8
    New Member
    Join Date
    May 2001
    Posts
    8
    I got this from another website: it will give you both your internet and your netwerk-adapter-ip:




    The IP_ADAPTER_INFO type returned from GetAdaptersInfo contains byte array representing the sIPAddress of the installed network card. By retrieving the pointer to the sIPAddress member, the local IP addresses for all installed network cards can be returned.
    Note that my system uses a LinkSys DSL Router to provide both DHCP and firewall capabilities, so internally the returned addresses are all in the 192.168.1.xxx range. For clarity in the illustration I used the plus sign as a delimiter; in practice you would probably use a more conventional symbol such as a comma or a pipe.



    To a form add a command button (Command1), and a Text box (Text1). Add the following to the form:

    Option Explicit
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Copyright ©1996-2001 VBnet, Randy Birch, All Rights Reserved.
    ' Some pages may also contain other copyrights by the author.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' You are free to use this code within your own applications,
    ' but you are expressly forbidden from selling or otherwise
    ' distributing this source code without prior written consent.
    ' This includes both posting free demo projects made from this
    ' code as well as reproducing the code in text or html format.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Const MAX_ADAPTER_NAME_LENGTH As Long = 256
    Private Const MAX_ADAPTER_DESCRIPTION_LENGTH As Long = 128
    Private Const MAX_ADAPTER_ADDRESS_LENGTH As Long = 8
    Private Const ERROR_SUCCESS As Long = 0

    Private Type IP_ADDRESS_STRING
    IpAddr(0 To 15) As Byte
    End Type

    Private Type IP_MASK_STRING
    IpMask(0 To 15) As Byte
    End Type

    Private Type IP_ADDR_STRING
    dwNext As Long
    IpAddress As IP_ADDRESS_STRING
    IpMask As IP_MASK_STRING
    dwContext As Long
    End Type

    Private Type IP_ADAPTER_INFO
    dwNext As Long
    ComboIndex As Long 'reserved
    sAdapterName(0 To (MAX_ADAPTER_NAME_LENGTH + 3)) As Byte
    sDescription(0 To (MAX_ADAPTER_DESCRIPTION_LENGTH + 3)) As Byte
    dwAddressLength As Long
    sIPAddress(0 To (MAX_ADAPTER_ADDRESS_LENGTH - 1)) As Byte
    dwIndex As Long
    uType As Long
    uDhcpEnabled As Long
    CurrentIpAddress As Long
    IpAddressList As IP_ADDR_STRING
    GatewayList As IP_ADDR_STRING
    DhcpServer As IP_ADDR_STRING
    bHaveWins As Long
    PrimaryWinsServer As IP_ADDR_STRING
    SecondaryWinsServer As IP_ADDR_STRING
    LeaseObtained As Long
    LeaseExpires As Long
    End Type

    Private Declare Function GetAdaptersInfo Lib "iphlpapi.dll" _
    (pTcpTable As Any, _
    pdwSize As Long) As Long

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (dst As Any, _
    src As Any, _
    ByVal bcount As Long)


    Private Sub Command1_Click()

    'pass a character to be used as the
    'delimiter in the list of returned addresses.
    Text1.Text = LocalIPAddresses("+")


    End Sub


    Public Function LocalIPAddresses(ByVal sDelim As String) As String

    'api vars
    Dim cbRequired As Long
    Dim buff() As Byte
    Dim Adapter As IP_ADAPTER_INFO
    Dim AdapterStr As IP_ADDR_STRING

    'working vars
    Dim ptr1 As Long
    Dim sIPAddr As String
    Dim sAllAddr As String

    Call GetAdaptersInfo(ByVal 0&, cbRequired)

    If cbRequired > 0 Then

    ReDim buff(0 To cbRequired - 1) As Byte

    If GetAdaptersInfo(buff(0), cbRequired) = ERROR_SUCCESS Then

    'get a pointer to the data stored in buff()
    ptr1 = VarPtr(buff(0))

    'ptr1 is 0 when no more adapters
    Do While (ptr1 <> 0)

    'copy the data from the pointer to the
    'first adapter into the IP_ADAPTER_INFO type
    CopyMemory Adapter, ByVal ptr1, LenB(Adapter)

    With Adapter

    'the DHCP IP address is in the
    'IpAddress.IpAddr member
    sIPAddr = TrimNull(StrConv(.IpAddressList.IpAddress.IpAddr, vbUnicode))
    sAllAddr = sAllAddr & sIPAddr & "+"

    'more?
    ptr1 = .dwNext

    End With 'With Adapter

    Loop 'Do While (ptr1 <> 0)

    End If 'If GetAdaptersInfo
    End If 'If cbRequired > 0

    'remove the last comma
    If Len(sAllAddr) > 0 Then
    sAllAddr = Left$(sAllAddr, Len(sAllAddr) - 1)
    End If

    'return any string found
    LocalIPAddresses = sAllAddr


    End Function
    '--end block--'

  9. #9
    chenko
    Guest
    Well its weird that your giving VB code out in ASP/VBScript forum, But heres the way to get it in ASP

    Note: It doesnt work on PWS


    Code:
    <%@ Language=VBScript %>
    <HTML>
    <BODY>
    <%
    Dim IPaddress
    IPaddress = Request.ServerVariables("REMOTE_ADDR")
    Response.Write(IPaddress)
    %>
    </BODY>
    </HTML>

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