private String receiveDataUdp(InetSocketAddress clientAddress) throws IOException, JSONException {
    EmployeeList employees = new EmployeeList();
    DatagramSocket datagramServer = new DatagramSocket(clientAddress);
    byte dataFromServer[] = new byte[2048];
    boolean isTimeExpired = false;
    datagramServer.setSoTimeout((int) SECONDS.toMillis(PROTOCOL_GROUP_TIMEOUT - 5));

    System.out.println(
        "[INFO] -----------------------------------------\n"
            + "[INFO] Collecting information from nodes....");
    while (!isTimeExpired) {
      DatagramPacket datagramPacketacket =
          new DatagramPacket(dataFromServer, dataFromServer.length);
      try {
        datagramServer.receive(datagramPacketacket);
      } catch (SocketTimeoutException e) {
        System.out.println(
            "[WARNING] -----------------------------------------\n"
                + "[WARNING] Waiting time expired...");
        isTimeExpired = true;
        continue;
      }
      String receivedJson = (String) deserialize(datagramPacketacket.getData());
      System.out.println("[INFO] " + "Received employee in JSON: " + receivedJson);
      employees.add(jsonToEmployee(receivedJson));
    }
    datagramServer.close();
    return employeeToXml(employees);
  }
 private void sendDataTcp(int dataServerPort, String xmlEmployees) throws IOException {
   ServerSocket serverSocket = new ServerSocket(dataServerPort);
   serverSocket.setSoTimeout((int) SECONDS.toMillis(100));
   boolean isTimeExpired = false;
   while (!isTimeExpired) {
     try {
       Socket socket = serverSocket.accept(); // Blocking call!
       serialize(xmlEmployees, socket.getOutputStream());
       socket.close();
     } catch (SocketTimeoutException e) {
       System.out.println(
           "[WARNING] ----------------------------------------- \n"
               + "[WARNING] Waiting time expired... Socket is closed.");
       isTimeExpired = true;
       continue;
     }
   }
   serverSocket.close();
 }