我對c不是太懂,為了完成上級的任務,組合了幾個函式,目的是監控arp快取,對arp條目的刪除時出現了問題,刪除不了想要刪除的ip位址,麻煩各位幫指導一下
int main()
// 獲取ip位址表,以便根據它將arp表項中的介面索引轉化為ip位址
pmib_ipaddrtable pipaddrtable = mygetipaddrtable(true);
// 當前的介面卡索引。注意,arp表應該按照介面索引排序
dwcurrindex = pipnettable->table[0].dwindex;
if(inte***ceidxtointe***ceip(pipaddrtable, dwcurrindex, szipaddr))
else
// 列印出索引為dwcurrindex的介面卡上的arp表項
for(i = 0; i < pipnettable->dwnumentries; ++i)
else
}// 列印出此arp表項中的資料
// mac位址
u_char *p = pipnettable->table[i].bphysaddr;
wsprintf(szprintablephysaddr, "%02x-%02x-%02x-%02x-%02x-%02x", p[0], p[1], p[2], p[3], p[4], p[5]);
// ip位址
struct in_addr inadtmp;
inadtmp.s_addr = pipnettable->table[i].dwaddr;
printf("xxyy1=%ld/n",pipnettable->table[i].dwindex );
// 型別
switch (pipnettable->table[i].dwtype)
xy=pingdestip(inet_ntoa(inadtmp));
if(xy==-1)
else
printf(" %-16s %-17s %-11s 正常/n",inet_ntoa(inadtmp), szprintablephysaddr, sztype);
return 0;
}// 獲取ip位址到介面卡的對映關係,即arp表
pmib_ipnettable mygetipnettable(bool border)
::globalfree(pipnettable);
}return null;
}void myfreeipnettable(pmib_ipnettable pipnettable)
pmib_ipaddrtable mygetipaddrtable(bool border)
return null;
}void myfreeipaddrtable(pmib_ipaddrtable pipaddrtable)
10 5 arp 管理系統的arp快取
用於操作本機的arp快取區,它可以顯示arp快取區中的所有條目 刪除指定的條目或者新增靜態的ip位址與mac位址的對應關係。什麼是arp?即位址解析協議 arp,address resolution protocol 其主要功能是根據ip位址獲取實體地址 mac位址 n 顯示數字ip位址 s 主機 ...
顯示arp快取的程式
從freebsd4.5的arp命令的源 中獲得,可以在macos10.6上編譯,執行。gcc o arp wall arp.c include include include include include include include include include include includ...
arp快取重新整理問題
修改單個引數 直接 sysctl w 修改即可 永久生效 root ufo130 eth0 sysctl w net.ipv4.neigh.eth0.base reachable time 5 net.ipv4.neigh.eth0.base reachable time 5 root ufo130...