sendARP

SendARP

The SendARP function sends an ARP request to obtain the physical address that corresponds to the specified destination IP address.

DWORD SendARP(
  IPAddr DestIP,     // destination IP address
  IPAddr SrcIP,      // IP address of sender
  PULONG pMacAddr,   // returned physical address
  PULONG PhyAddrLen  // length of returned physical addr.
);
Parameters
DestIP
[in] Specifies the destination IP address. The ARP request attempts to obtain the physical address that corresponds to this IP address.
SrcIP
[in] Specifies the IP address of the sender. This parameter is optional. The caller may specify zero for the parameter.
pMacAddr
[out] Pointer to an array of ULONG variables. The first six bytes of this array receive the physical address that corresponds to the IP address specified by the DestIP parameter.
PhyAddrLen
[out] Pointer to a ULONG variable. This variable contains the length of the physical address pointed to by the pMacAddr parameter.
Return Values

If the function succeeds, the return value is NO_ERROR.

If the function fails, use FormatMessage to obtain the message string for the returned error.

Remarks

For information about the IPAddr data type, see Win32 Simple Data Types. To convert an IP address between dotted decimal notation and IPAddr format, use the inet_addr and inet_ntoa functions.

Example Code

The following code demonstrates how to obtain the media access control (MAC) address associated with a specified IP address.

//
// Link with ws2_32.lib and iphlpapi.lib
//

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>


int __cdecl main()
{
    HRESULT hr;
    IPAddr  ipAddr;
    ULONG   pulMac[2];
    ULONG   ulLen;

    ipAddr = inet_addr ("216.145.25.31");
    memset (pulMac, 0xff, sizeof (pulMac));
    ulLen = 6;
    
    hr = SendARP (ipAddr, 0, pulMac, &ulLen);
    printf ("Return %08x, length %8d/n", hr, ulLen);
    
    size_t i, j;
    char * szMac = new char[ulLen*3];
    PBYTE pbHexMac = (PBYTE) pulMac;

    //
    // Convert the binary MAC address into human-readable
    //
    for (i = 0, j = 0; i < ulLen - 1; ++i) {
        j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
    }
    
    sprintf (szMac + j, "%02X", pbHexMac[i]);
    printf ("MAC address %s/n", szMac);
    
    delete [] szMac;

    return 0;
}
Requirements

  Windows NT/2000/XP: Included in Windows 2000; Windows XP Pro; and Windows .NET Server.
  Windows 95/98/Me: Unsupported.
  Header: Declared in Iphlpapi.h.
  Library: Use Iphlpapi.lib.

See Also

CreateIpNetEntry, DeleteIpNetEntry, FlushIpNetTable, SetIpNetEntry

Platform SDK Release: August 2001
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值