監控ARP快取

2021-05-24 13:19:27 字數 1428 閱讀 6746

我對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...