private boolean isAlive(String IPadr) { String responseFromNode = null; boolean result = true; // Initialise socket and read/write try { socket = new Socket(IPadr, 4017); sender = new PrintWriter(socket.getOutputStream(), true); receiver = new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Ask the node if it is alive sender.println(protocol.checkAliveQuery()); // Listen for a reply for timeoutDuration seconds long startTime = System.currentTimeMillis(); long timeout = startTime + timeoutDuration; while (System.currentTimeMillis() < timeout) { try // will it wait here? { responseFromNode = receiver.readLine(); } catch (IOException e) { e.printStackTrace(); } // Break if the node answered if (responseFromNode != null) break; } // Evaluate node reply if (responseFromNode == null) result = false; else if (responseFromNode == protocol.checkAliveResponse()) result = true; // Close socket and read/write try { receiver.close(); sender.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } return result; }