Другое событие 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));
}
Если "локальным" Вы имеете в виду на том же сегменте сети, то необходимо выполнить следующие шаги:
Или можно просто позволить Python выполнить nmap внешне и передать результаты по каналу назад в программу.
Обновление : сценарий теперь расположен на github.
я записал маленький сценарий Python, который усиливает scapy arping()
.
Если Вы знаете названия своих компьютеров, можно использовать:
import socket
IP1 = socket.gethostbyname(socket.gethostname()) # local IP adress of your computer
IP2 = socket.gethostbyname('name_of_your_computer') # IP adress of remote computer
Иначе необходимо будет просканировать для всех IP-адресов, которые следуют за той же маской как локальный компьютер (IP1), как указано в другом ответе.
Один из ответов в этот вопрос мог бы помочь Вам. Кажется, существует версия агностика платформы для Python, но я еще не попробовал его.
Я нашел этот сетевой сканер в статье Python и записал этот короткий код. Это делает то, что Вы хотите! Действительно однако необходимо знать доступные порты для устройств. Порт 22 является ssh стандартом и что я использую. Я предполагаю, что Вы могли циклично выполниться по всем портам. Некоторые значения по умолчанию:
linux: [20, 21, 22, 23, 25, 80, 111, 443, 445, 631, 993, 995]
windows: [135, 137, 138, 139, 445]
mac: [22, 445, 548, 631]
import socket
def connect(hostname, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
result = sock.connect_ex((hostname, port))
sock.close()
return result == 0
for i in range(0,255):
res = connect("192.168.1."+str(i), 22)
if res:
print("Device found at: ", "192.168.1."+str(i) + ":"+str(22))