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通,要先检查你的网络连接。这个函数没啥问题的,但前提是网络通信正常。