Другое событие 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));
}
Это зависит от настроек вашей сети. Но, вероятно, нет.
Ниже приведен краткий обзор Ethernet и IP. MAC-адрес является уникальным адресом сетевой карты. Он используется для определения того, для какого пользователя в сегменте сети есть пакет. Вы можете использовать ARP для получения MAC-адреса для IP-адреса. Но это работает, как ожидалось, только если вы находитесь в одном и том же сетевом сегменте.
Итак, вопрос в том, что такое сегмент сети? Это зависит от технологии, которую вы используете, но здесь есть общие случаи. Вся беспроводная сеть является сегментом сети. Каждый пользователь сети может разговаривать через Ethernet с каждым другим пользователем. В проводных сетях это зависит от оборудования. Если у вас хороший старый BNC или концентратор, у вас есть один сегмент сети со всеми видами использования. Снова каждый пользователь может разговаривать с любым другим. С коммутатором в сети сегмент сети представляет собой только кабель, который соединяет вас с коммутатором. Здесь вы можете разговаривать только с коммутатором через Ethernet. Каждому пользователю требуется как минимум IP.
Слишком плохо, что в большинстве ситуаций с HTTP, который строит на TCP / IP, вы никогда не находитесь в том же сегменте сети, что и ваш пользователь, 99,99%. Вы можете использовать ARP, но получите только MAC-адрес первого хопа. Лучше, в зависимости от вашего оборудования, вы даже не можете быть в IP-сети, основанной на Ethernet; ATM, например ...
Я не думаю, что есть способ сделать это в ASP.NET. MAC является свойством TCP-пакета, а на уровне HTTP нет пакетов или MAC-адресов (например, один HTTP-запрос может быть собран из нескольких TCP-пакетов).
Вы можете попробовать использовать пакет sniffer (например, WireShark) для захвата пакетов TCP, а затем проанализировать их, чтобы извлечь MAC-адреса и сопоставить их с HTTP-запросами.
В любом случае вы не получите никаких полезных данных, если пользователь не находится в одном и том же сегменте сети как ваш сервер.
UPD. Как отмечалось в комментариях, я перепутал сетевые уровни. MAC-адрес является свойством Ethernet-фрейма , а не TCP-пакетом. Однако заключение все же является правильным.
Это невозможно, если вы не собираетесь создавать компонент ActiveX, и в этом случае он будет работать только в IE.