Find IP of me

Posted on 2006-05-23
Last Modified: 2013-11-13
I am looking for the VB6 code to determine the IP  address of the local machine
Question by:JohnFra
    LVL 1

    Accepted Solution

    This is for the external IP address

    'This code requires an INet ciontrol named INet
    Private Function GetIP() as String
    GetIP = Split(Split(INet.OpenURL(""), "displaycopy('")(1), "'")(0)
    End Function

    And to get your Local IP Address

    'This requires a WinSock control named Sck
    Private Function GetIPLocal() as String
    End Function
    LVL 19

    Expert Comment

    Here is an example that doesn't require INET Controls:
    LVL 15

    Expert Comment

    here is a complete tutorial using winsock.
    you will learn things about it. It`s a nice complete tutorial. I hope it helps you.
    LVL 3

    Expert Comment

    Get HostName/IP Using API ==>

    Place all the code in a form with a command1 command button. It will produce two msgboxes, one with the hostname and the other with the ip.

    Private Const WS_VERSION_REQD = &H101
      Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
      Private Const MIN_SOCKETS_REQD = 1
      Private Const SOCKET_ERROR = -1
      Private Const WSADescription_Len = 256
      Private Const WSASYS_Status_Len = 128

      Private Type HOSTENT
          hName As Long
          hAliases As Long
          hAddrType As Integer
          hLength As Integer
          hAddrList As Long
      End Type

      Private Type WSADATA
          wversion As Integer
          wHighVersion As Integer
          szDescription(0 To WSADescription_Len) As Byte
          szSystemStatus(0 To WSASYS_Status_Len) As Byte
          iMaxSockets As Integer
          iMaxUdpDg As Integer
          lpszVendorInfo As Long
      End Type

      Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
      Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _
      wVersionRequired as Integer, lpWSAData As WSADATA) As Long
      Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
      Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal hostname$,_
      ByVal HostLen as Long) as long
      Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal _
      hostname$) As Long
      Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal_
      hpvSource&, ByVal cbCopy&)

      Function hibyte(ByVal wParam As Integer)

          hibyte = wParam \ &H100 And &HFF&

      End Function

      Function lobyte(ByVal wParam As Integer)

          lobyte = wParam And &HFF&

      End Function

      Sub SocketsInitialize()
      Dim iReturn As Integer
      Dim sLowByte As String, sHighByte As String, sMsg As String

          iReturn = WSAStartup(WS_VERSION_REQD, WSAD)

          If iReturn <> 0 Then
              MsgBox "Winsock.dll is not responding."
          End If

          If lobyte(WSAD.wversion) <WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = _
              WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then

              sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))
              sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))
              sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte
              sMsg = sMsg & " is not supported by winsock.dll "
              MsgBox sMsg
          End If

          'iMaxSockets is not used in winsock 2. So the following check is only
          'necessary for winsock 1. If winsock 2 is requested,
          'the following check can be skipped.

          If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
              sMsg = "This application requires a minimum of "
              sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets."
              MsgBox sMsg
          End If

      End Sub

      Sub SocketsCleanup()
      Dim lReturn As Long

          lReturn = WSACleanup()

          If lReturn <> 0 Then
              MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in Cleanup "
          End If

      End Sub

      Sub Form_Load()


      End Sub

      Private Sub Form_Unload(Cancel As Integer)


      End Sub

      Private Sub Command1_click()
      Dim hostname As String * 256
      Dim hostent_addr As Long
      Dim host As HOSTENT
      Dim hostip_addr As Long
      Dim temp_ip_address() As Byte
      Dim i As Integer
      Dim ip_address As String

          If gethostname(hostname, 256) = SOCKET_ERROR Then
              MsgBox "Windows Sockets error " & Str(WSAGetLastError())
              Exit Sub
              hostname = Trim$(hostname)
          End If

          hostent_addr = gethostbyname(hostname)

          If hostent_addr = 0 Then
              MsgBox "Winsock.dll is not responding."
              Exit Sub
          End If

          RtlMoveMemory host, hostent_addr, LenB(host)
          RtlMoveMemory hostip_addr, host.hAddrList, 4

          MsgBox hostname

          'get all of the IP address if machine is  multi-homed

              ReDim temp_ip_address(1 To host.hLength)
              RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength

              For i = 1 To host.hLength
                  ip_address = ip_address & temp_ip_address(i) & "."
              ip_address = Mid$(ip_address, 1, Len(ip_address) - 1)

              MsgBox ip_address

              ip_address = ""
              host.hAddrList = host.hAddrList + LenB(host.hAddrList)
              RtlMoveMemory hostip_addr, host.hAddrList, 4
           Loop While (hostip_addr <> 0)

      End Sub

    'Code Copied from
    LVL 19

    Expert Comment

    AbhishekSharma : That code will only provide the localhost name/address, its of no use to anyone who is behind a router.

    LVL 11

    Expert Comment

    Please send me your e-mail address at then I can send you a set of classes I wrote that will show you all the private and public IP addresses on your system, including the Index, Subnet Mask, Broadcast Address etc.

    Featured Post

    Top 6 Sources for Identifying Threat Actor TTPs

    Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

    Join & Write a Comment

    Suggested Solutions

    Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
    Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
    The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
    The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

    745 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    20 Experts available now in Live!

    Get 1:1 Help Now