Есть ли способ отправить ARP-запрос через Java?

Есть ли способ отправить запрос ARP в приложении Java? Я знаю, что ARP находится на уровне под TCP и UDP, поэтому по умолчанию Java не может отправлять запрос ARP. Мне просто интересно, есть ли какая-нибудь сторонняя библиотека Java, которая позволит вам отправлять запрос ARP.

Я знаю, что для захвата ответа ARP я могу использовать jpcap, чтобы эта часть была решена.

Спасибо


person beyonddc    schedule 01.02.2013    source источник
comment
Можете ли вы более четко объяснить, что вы имеете в виду в приложении Java. Java-приложение всегда может выполнить некоторую внешнюю команду, вызывая для этого другой инструмент. Библиотеки java имеют почти те же возможности, что и стандартные java.   -  person eis    schedule 01.02.2013
comment
Прошу прощения, я ищу решение API, а не выполняю внешнюю команду, такую ​​как arping.   -  person beyonddc    schedule 01.02.2013
comment
См. stackoverflow.com/questions/ 1238963 /   -  person maerics    schedule 01.02.2013
comment
Это может помочь, если вы объясните, что вы действительно пытаетесь сделать - я предполагаю, что вам нужен MAC-адрес удаленной машины. Это возможно только в том случае, если вы находитесь в одной подсети - если вы работаете через маршрутизатор, тогда ARP сообщит вам аппаратный адрес маршрутизатора, а не машины. Так работают сети ...   -  person Floris    schedule 01.02.2013


Ответы (3)


Как вы сказали, стандартная библиотека Java не предоставляет достаточно низкоуровневого сетевого API для отправки запроса ARP.

pcap4j предоставляет привязки Java для libpcap / winpcap и, таким образом, может использоваться для отправки запроса ARP. Информацию о библиотеке можно найти на их домашней странице. См. в этом образец того, как отправить запрос ARP.

person natbob1    schedule 18.08.2016

Приложение Java всегда может выполнить некоторую внешнюю команду, вызывая для этого другой инструмент. Я не совсем понимаю, что вы подразумеваете под "стандартной Java".

Судя по поиску в Google, похоже, что arping в kraken pcap который находится на Java. См. о Kraken.

Также для этой цели используется jpcap.

person eis    schedule 01.02.2013

Нет, не в родной Java (я предполагаю, что это из соображений безопасности). Это можно сделать, хотя для этого требуется использование библиотек собственного кода C ++ / C и программирования JNI. https://forums.oracle.com/forums/thread.jspa?threadID=1690617

person DangerDan    schedule 01.02.2013
comment
Возможно, он не полностью родной, но есть API, и вот ссылка на него: yuba.stanford.edu/vns/clack/instructor/rip.html#apis - person grepit; 02.02.2013
comment
«Из соображений безопасности» - это просто догадки, если вы не можете указать источник. Дело в том, что его просто нет. Нетихеры - это ICMP, RARP, ... Ваша ссылка не очень помогает. - person user207421; 13.04.2016