Ejemplo n.º 1
0
  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;
  }