Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Вам нужен ARP. Стандартная библиотека Python не включает кода для этого, таким образом, любой необходимо назвать внешнюю программу (ОС может иметь 'arp' утилиту), или необходимо создать пакеты сами (возможно с инструментом как Scapy.
Я не думаю, что существует созданный способом получить его из самого Python.
Мой вопрос, как Вы получаете информацию IP из своей сети?
Для получения его от локальной машины, Вы могли проанализировать ifconfig (Unix) или ipconfig (окна) с небольшой трудностью.
Если Вы хотите чистое решение Python, можно смотреть на Scapy для обработки пакетов (необходимо отправить запрос ARP и осмотреть ответы). Или если Вы не возражаете вызывать внешнюю программу, можно использовать arping
(в системах Un*x я не знаю об эквивалентном Windows).
Кажется, что нет собственного способа сделать это с Python. Ваш лучший выбор состоял бы в том, чтобы проанализировать вывод "ipconfig / все" в Windows или "ifconfig" на Linux. Рассмотрите использование os.popen () с некоторым regexps.
Зависит от Вашей платформы. Если Вы используете *, отклоняют, можно использовать команду 'arp' для поиска MAC-адреса для данного IP (принимающий IPv4) адрес. Если это не работает, Вы могли бы проверить с помощью ping-запросов адрес и затем посмотреть, или если у Вас есть доступ к необработанной сети (использование BPF или некоторого другого механизма), Вы могли отправить свои собственные пакеты ARP (но это - вероятно, излишество).
Вы хотели бы проанализировать вывод 'arp', но кэш ARP ядра будет только содержать их IP-адрес (IP-адреса), если те хосты общались с хостом, куда сценарий Python работает.
ifconfig может использоваться для отображения MAC-адресов локальных интерфейсов, но не тех, которые на LAN.
Mark Pilgrim описывает, как сделать это в Windows для текущей машины с модулем Netbios здесь. Можно получить модуль Netbios как часть пакета Win32, доступного по python.org. К сожалению, в данный момент я не могу найти документы о модуле.
поскольку Python не был предназначен для контакта с конкретными вопросами ОС (он, как предполагается, интерпретируется и кросс-платформенный), я выполнил бы внешнюю команду, чтобы сделать так:
в Unix команда ifconfig
при выполнении его как канала, Вы получаете желаемый результат:
import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())