Пользовательский вид onTouch не отвечает [dубликат]

Java не предоставляет прямого способа запроса MAC-адреса хоста в вашей сети, поскольку это абстрагируется библиотеками сокетов Java.

В некотором смысле это имеет смысл, поскольку MAC-адрес хост фактически говорит очень мало. Нет такого понятия, как «MAC-адрес хоста».

  • Многие хосты будут иметь несколько сетевых адаптеров, все с отдельным MAC-адресом, с которым они могут подключиться к сети. На компьютере, на котором я сейчас работаю, есть проводной адаптер ethernet, адаптер WiFi и адаптер Firewire, и все они имеют свой собственный MAC-адрес. Это означает, что для узла нет окончательного MAC-адреса.
  • Если хост находится в другой подсети, ARP фактически даст вам MAC-адрес для последнего маршрутизатора, через который прошел ваш пакет, вместо MAC адрес хоста, который вы сканируете.

Сопоставьте обе эти проблемы вместе, а это означает, что на одном хосте может быть много разных MAC-адресов (если у него более одного сетевого адаптера) и один из MAC-адресов может представлять множество разных хостов (если трафик проходит через маршрутизатор).

Предполагая, что вы знаете все это, и вам все равно нужно получить MAC-адрес хоста, единственный способ сделать это в Java :

  • Родной для клиента, который запускает вашу программу: вы можете запустить инструмент командной строки ARP и проанализировать его вывод. Вы можете использовать какой-то вызов JNI. Я не слишком хорошо знаком с JNI, поэтому я не могу с этим поделать. Напишите отдельное маленькое собственное приложение, к которому вы можете получить доступ через Java через Telnet или какой-то такой протокол, и который будет запускать для вас команду ARP.
  • Родной для хоста, который вы хотите сканировать: вы можете использовать SNMP, как предлагают некоторые из других ответов на этот поток. Я откладываю ответы на эти ответы, чтобы сделать эту работу для вас. SNMP - отличный протокол, но имейте в виду, что OID SNMP могут быть зависимыми от платформы и зависят от поставщиков. OID, работающие в Windows, не всегда работают для Linux и наоборот. Если вы знаете, что ваш хост запускает Windows, вы можете использовать WMI . Класс Win32_NetworkAdapter содержит требуемую информацию, но имейте в виду, что это возвращает все сетевых адаптеров хоста, даже те, что Windows делает. Кроме того, он требует учетных данных администратора для хоста, который вы просматриваете. Google расскажет вам, как подключиться к WMI с Java. Если вы знаете, что ваш хост запускает OS X, вы можете запустить SSH в машину и проанализировать вывод команды system_profile . Для Linux, вероятно, существует инструмент, похожий на файл system_profile OS X .

2
задан stk 10 May 2011 в 15:58
поделиться

1 ответ

Вы должны использовать строчный вид в xml для вашего настраиваемого макета:

  & lt; view class = "com.test.www.BrushPreview" android: id  = "@ + id / brushview" android: layout_width = "100dip" android: layout_height = "100dip" android: layout_gravity = "center" / & gt;   

(в соответствии с ваша ссылка тоже), и она должна работать.

В противном случае он пытается создать android.view .View экземпляра.

2
ответ дан rekaszeru 15 August 2018 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: