2011-12-23 3 views
1

Я пишу программу в .NET C++. Я отправляю широковещательный пинг в свою локальную сеть. Все мои целевые устройства способны реагировать на широковещательную рассылку, и я действительно отслеживаю все их ответы в Wireshark. Моя цель - получить IP-адреса всех отвечающих станций.Ответов на Ping broadcast

Проблема заключается в том, что API Microsoft не содержит поддержки для записи всех ответов за определенный промежуток времени. Такие функции, как IcmpSendEcho, просто возвращаются при первом ответе (хотя API заявляет, что он может записывать более одного ответа icmp), это известная проблема, и после поиска в Интернете и поиска здесь каждый сообщает о той же проблеме с этими функциями.

Что я могу сделать для достижения своей цели, не выходя слишком низкоуровневым для получения ответа? Имеют ли окна какую-то запись истории icmp? Буду благодарен за любые предложения!

+0

Я также хотел бы заявить, что моя сеть может не включать маршрутизатор или другой источник DHCP – psidemus

+0

Запустить 255 пингов в 255 потоках? Стоит попробовать .. –

+0

Привет, martin, Id, как более изящное решение, чем с грубой силой ... – psidemus

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^