Я пытался обнаружить любое устройство (рабочий стол, мобильный телефон, планшет и т. Д.), Который входит в корпоративную сеть. Это очень грязный код, который я написал. Код постоянно проверяет подключенные устройства и печатает новые, проверяя набор.Как обнаружить устройства, регистрирующиеся в сети?
public class DeviceDetectAgent {
private static Set<String> connectedDevicesPast = new HashSet<String>();
private static void detectNewDevices() {
private Set<String> connectedDevicesPresent = new HashSet<String>(); // saves all devices detected in the previous poll
InetAddress localhost = InetAddress.getLocalHost();
byte[] iPAddress = localhost.getAddress();
for (int i=1; i<=254; i++) {
iPAddress[3] = (byte) i;
InetAddress inetAddress = InetAddress.getByAddress(iPAddress);
if (inetAddress.isReachable(1000)) {
String device = inetAddress.toString();
if (!connectedDevicesPast.contains(device)) {
System.out.println("New device " + device + "found.");
}
connectedDevicesPresent.add(device);
}
}
connectedDevicesPast = connectedDevicesPresent;
}
public static void main(String[] args) {
while (true) {
detectNewDevices();
Thread.sleep(1000);
}
}
}
Моя цель - создать агент, который обнаруживает, что устройство регистрируется в сети. Есть ли улучшения в моем коде? Я считаю, что мой код слишком тривиален.
Добро пожаловать в StackOverflow! Вы должны задать вопрос о просмотрах кода через http://codereview.stackexchange.com/. Stackoverflow пытается избежать вопросов, на которых ответ основан на мнении. – Patrick