首页
社区
课程
招聘
[求助]inet_addr返回的是ULONG型的值,无法转化成IPAddr
发表于: 2008-9-29 19:22 5414

[求助]inet_addr返回的是ULONG型的值,无法转化成IPAddr

2008-9-29 19:22
5414
#include<Winsock2.h>
#include<stdio.h>
#include<windows.h>

#pragma comment("Ws2_32.lib")
typedef struct {  union {    struct {      u_char s_b1,s_b2,s_b3,s_b4;    } S_un_b;    struct {      u_short s_w1,s_w2;    } S_un_w;    u_long S_addr;  } S_un;
} IPAddr;

typedef DWORD(*REALSENDARP)(IPAddr DestIP,LONG SrcIP,PULONG pMacAddr,LONG PhyAddrLen);
  
  
  

REALSENDARP SendARP;
void main()
{
       

HRESULT hr;
    IPAddr  ipAddr;
    ULONG   pulMac[2];
    ULONG   ulLen;

    ipAddr = inet_addr ("192.168.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;

    }
这段代码是在msdn上的,由于vc6没有iphlpapi.lib,所以我就动态调用sendarp,可是前面的inet_addr返回的是ULONG型的值,无法转化成IPAddr,编译老报错!,这是msdn上的代码,怎么回这样呢??请高手帮忙解决!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 142
活跃值: (116)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
连接那里输入ws2_32.lib 在msdn里能查到的
2008-9-30 23:28
0
雪    币: 243
活跃值: (179)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用htonl把inet_addr返回的local host转成网络序
2008-10-1 12:23
0
游客
登录 | 注册 方可回帖
返回
//