为什么SendARP返回的MAC地址是0000.0000.0ffe呢?(100分)

  • 主题发起人 主题发起人 wrnxd168
  • 开始时间 开始时间
W

wrnxd168

Unregistered / Unconfirmed
GUEST, unregistred user!
function GetMacFromIP(Ip: string): string;
Function sendarp(ipaddr:ulong;
temp:dword;
ulmacaddr:pointer;
ulmacaddrleng:pointer) : DWord;
StdCall;
External 'Iphlpapi.dll' Name 'SendARP';


function GetMacFromIP(Ip:string):string;
var
myip:ulong;
mymac:array[0..5] of byte;
mymaclength:ulong;
r:integer;
begin
myip:=inet_addr(PChar(ip));
mymaclength:=length(mymac);
r:=sendarp(myip,0,@mymac,@mymaclength);
if r=0 then
result:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]])
else
result:='offline';
end;
如上,发现不在线的机器返回的mac地址全是0000.0000.0ffe,为什么呢,
SENDARP返回值都是什么呀?
 
0000.0000.0ffe是个广播地址
广播地址本应该是0xffffffff 但操作系统不是判断全部,而只是看后面的几位是不是0b1111111111 ,不同的操作系统判断的位数有些不同
 
怎么判断是广播地址呢,再有SENDARP返回的值是什么算正常的呢?
 
后退
顶部