首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ARP实现收索局域网活动主机的有关问题

2013-02-24 
ARP实现收索局域网活动主机的问题我在网上看见利用ARP收索局域网主机的例子,自己稍加改动在VS2008调试运行

ARP实现收索局域网活动主机的问题
我在网上看见利用ARP收索局域网主机的例子,自己稍加改动在VS2008调试运行了,可是在以下的if语句处一直为假,导致不能打印出本机的MAC地址。请高手看看程序的问题出在哪里?网络源码地址为:http://xd03071149.blog.163.com/blog/static/12350636320123226475977/

while((res = pcap_next_ex(adhandle,&pkt_header,&pkt_data)) >= 0)
{
    if(*(unsigned short *)(pkt_data + 12) == htons(ETH_ARP) && *(unsigned short*)(pkt_data + 20) == htons(ARP_REPLY) && *(unsigned long*)(pkt_data+38) == inet_addr("1270.0.0.2"))
    {
for(i = 0; i < 6; i++)
{
   ip_mac[i] = *(unsigned char *)(pkt_data + 22 + i);
   printf("%02x",ip_mac[i]);
}
printf("\n");
break;
    }
}

[解决办法]
 inet_addr("1270.0.0.2"))
这个是怎么回事?
[解决办法]

引用:
inet_addr("1270.0.0.2"))
这个是怎么回事?

+1 127.0.0.1 情何以堪
[解决办法]
1L好眼力。

[解决办法]
好像收到的数据中协议不是网络字节序,你试试将htons去掉,仅供参考。
[解决办法]
比如本机ip为192.168.1.123
在cmd窗口中试执行以下命令:
for /L %d in (1,1,254) do start cmd /c "ping 192.168.1.%d -n 1 -w 500 >ping%d.txt"
然后查看文件ping1.txt,ping2.txt,...,ping254.txt的内容。

[解决办法]
引用:
引用:比如本机ip为192.168.1.123
在cmd窗口中试执行以下命令:
for /L %d in (1,1,254) do start cmd /c "ping 192.168.1.%d -n 1 -w 500 >ping%d.txt"
然后查看文件ping1.txt,ping2.txt,...,ping254.txt……
没有明白你的意思啊

我的意思是这样也可以快速获得局域网中的活动主机的IP。
[解决办法]
ARP 数据里不会有loopback的MAC&IP邦定的,127.0.0.1只是用于local loopback
还是去补补基本的网络知识吧
[解决办法]
127.0.0.1 肯定不能获得本机MAC, MAC是和网卡绑定的.
最简单的dos命令: getmac, 你直接调用它, 再解析输出都简单的多. 

更多方法, 参考:
http://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm

热点排行