Results 1 to 7 of 7

Thread: How do I obtain an IP Address using the MAC ID??

  1. #1

    Thread Starter
    Member
    Join Date
    Feb 2003
    Location
    Cincy
    Posts
    55

    Question How do I obtain an IP Address using the MAC ID??

    I am trying to write some code that will allow me to connect a machine and then using its MAC ID Address, and try to get its IP address and connect to it just using the Media Access Control ID (MAC ID). Please help!!!!

  2. #2
    Fanatic Member
    Join Date
    Feb 2003
    Location
    Los Angeles, CA
    Posts
    681

    Arrow

    can you be more specific - do you already have the mac address and you need to parse the ip address out of it? are you sure you need that computer's ip address even if it is a 192.168.0.x or a 10.x.x.x? because you may be actually more interrested in the router's ip...

  3. #3

    Thread Starter
    Member
    Join Date
    Feb 2003
    Location
    Cincy
    Posts
    55

    Question

    Yes I always have the MAC ID, and only the MAC ID. I would just like to parce the IP Address from the MAC ID.. Right now through my code I can get the MAC ID, Port #, Name etc. using winsock, but I would just like to use the MAC ID , and connect and then obtain the IP address through code. Any help would be greatly appreciated. Thx...

  4. #4
    Fanatic Member
    Join Date
    Feb 2003
    Location
    Los Angeles, CA
    Posts
    681
    here's a piece of code from msdn that would let you get the ip address of the current computer. i hope your question is actually referring to getting the ip of the computer that runs your app, not the ip of the other computer youre connected to... good luck.

    r





    Start a new project in Visual Basic. Form1 is created by default.


    Place a CommandButton, Command1, on Form1.


    Place the following code in the General Declarations section of Form1:



    Private Const WS_VERSION_REQD = &H101
    Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
    Private Const WS_VERSION_MINOR = WS_VERSION_REQD 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 WSAD As WSADATA
    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
    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
    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
    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
    End If

    End Sub

    Sub Form_Load()

    SocketsInitialize

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    SocketsCleanup

    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
    Else
    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

    Do
    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) & "."
    Next
    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



    Press the F5 key to run the project.


    Click Command1 to obtain the host information.

  5. #5

    Thread Starter
    Member
    Join Date
    Feb 2003
    Location
    Cincy
    Posts
    55

    Arrow Thanks I will try this....

    Sorry I did not make myself clear. What I want to do is connect a machine to say my laptop via hub, or xover cable then by using its MAC ID (MAC ID for REMOTE machine) I want to be able to obtain its IP address once connected via its MAC ID. The code I have written already allows me to get the HOST info, and the remote info using Winsock, but the IP Address must be given for the winsock to connect. I can get the MAC ID through my code once connected, but I want to get it the other way around if possible. I would like to give the MAC ID then get the IP address. My PC will always be the host, and will be running my App, just to connect to the remote. I am not sure if this is a problem or not. Thanks

    Fleck

  6. #6
    Fanatic Member
    Join Date
    Feb 2003
    Location
    Los Angeles, CA
    Posts
    681
    as long as you have the connection already established, you can 'ask' your peer (sending it some kind of command over tcp) to send you back its ip address. the peer would run a small piece of code like the one that i sent to you. if this is not an option, i would suggest to try to look and see how can you get some hooks to the windows arp (address resolution protocol). it seems weird to me that you are able to establish a tcp connection with a remote host without knowing its ip address though...

  7. #7

    Thread Starter
    Member
    Join Date
    Feb 2003
    Location
    Cincy
    Posts
    55

    Arrow I have to give IP Address for connection.

    See I just want to; say put the MAC ID in a text box, or input box, and then from that connect to the remote machine and then from that decipher its IP Address from that conncection. in other words just get the IP address using the MAC ID to connect if possible.... Thanks Again....

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