2011-12-23 78 views
1

我正在用.NET C++編寫程序。我在本地網絡上發送廣播ping。我的所有目標設備都能夠響應ping廣播,而且我確實可以在Wireshark中跟蹤他們的所有響應。我的目標是檢索所有響應站的IP地址。回覆Ping廣播

問題是,微軟的API不包括在給定時間間隔內記錄所有回覆的支持。像IcmpSendEcho這樣的函數只是在第一個回覆時返回(雖然API聲明它可以記錄多個icmp回覆),但這是一個這是一個衆所周知的問題,在Google搜索和搜索之後,每個人都會報告與這些功能相同的問題。

我可以做些什麼來實現我的目標,而不會太低級別的回覆提取? Windows是否持有某種類型的icmp歷史記錄? 我將不勝感激任何建議!

+0

我還想聲明我的網絡可能不包含路由器或其他DHCP源 – psidemus 2011-12-23 19:11:45

+0

在255個線程中啓動255個ping?值得一試.. – 2011-12-23 19:14:33

+0

嗨馬丁,Id像一個更優雅的解決方案比bruteforce一... – psidemus 2011-12-26 19:51:38

回答

0
1) First call FlushIpNetTable. 
2) Send the ping and ignore the response. 
3) Read the ARP table using the GetIpNetTable call. 
+2

嗨史蒂夫,感謝您的快速回復。不幸的是,ping廣播地址不會啓動arp請求,因此arp表不會更改。 – psidemus 2011-12-26 19:32:53