当前位置: 代码迷 >> WinCE >> SendARP失去的地址不能动态改变
  详细解决方案

SendARP失去的地址不能动态改变

热度:155   发布时间:2016-04-28 11:54:00.0
SendARP得到的地址不能动态改变
WinCE嵌入式系统中,单片机程序调用SendARP函数得到MAC地址一直不会改变。

while(IsNetServerStart)
    {
        Sleep(5000);
        ipAddr = inet_addr ("192.168.8.10");
        hr = SendARP (ipAddr, 0, pulMac, &ulLen);
        if(hr!=NO_ERROR)
        {
            printf("Nothing Find!");
        }
        unsigned char * mac_addr=(unsigned char*)pulMac;
        sprintf(strMacAddr,"%.2x-%.2x-%.2x-%.2x-%.2x-%.2x\n",mac_addr[0],mac_addr[1],mac_addr[2],mac_addr[3],mac_addr[4],mac_addr[5]);
        printf(strMacAddr);
    }


设备机器ip为192.168.8.12.若开机得到的MAC地址为ff-ff-ff-ff-ff-ff,则在之后连上ip地址为192.168.8.10的设备也不能得到新的MAC地址。
默认的ArpCacheMinReferencedLife存在时间为10分钟,但经过10分钟后仍然没效。

另注:设备是可以与在它之后启动的机器进行通信的。
------解决思路----------------------

你的ip不变,mac地址怎么会变呢?
------解决思路----------------------
你能不能ping通设备?如果不能ping通,要先检查你的网络连接。这个函数没啥问题的,但前提是网络通信正常。
  相关解决方案