/**
   * Comprueba Identificador de cFtp ClusterNet v1.0
   *
   * @param buf Un objeto Buffer con los datos leidos.
   * @return true si se ha recibido el Identificador de cFtp, false en caso contrario
   */
  public static boolean parseIDFTPMulticast(Buffer buf) throws IOException {
    boolean bOK = false;
    try {
      // Leer Magic
      if (buf.getInt(0) != ProtocolcFTP.MAGIC) return bOK;

      if (buf.getInt(4) != ProtocolcFTP.VERSION) return bOK;

      bOK = true;

    } finally {
      return bOK;
    }
  }
  /**
   * Recibir Tamaño del Fichero
   *
   * @return lSize Tamaño del Fichero
   */
  private long receiveFileSize() throws IOException {
    long lFileSize = 0;
    try {
      Buffer buf = new Buffer(8);

      // Obtener la longitud del nombre del fichero...
      this.id_socketIn.read(buf.getBuffer());

      lFileSize = buf.getLong(0);

      Log.log("Size: " + lFileSize + newline, "");
    } finally {
      return lFileSize;
    }
  }
  /**
   * Recibir Nombre del Fichero
   *
   * @param buf Un objeto Buffer con los datos.
   * @return sFileName Nombre del Fichero. null Si hay un error
   */
  public static String parseFileName(Buffer buf) {
    String sFileName = null;

    try {
      int iLong = 0;
      byte[] bytes = null;

      // Obtener la longitud del nombre del fichero...
      iLong = (int) buf.getInt(16);
      bytes = buf.getBytes(20, iLong);

      // Obtener el nombre del fichero...
      sFileName = new String(bytes);

      // this.getFTP().insertStringJTextPane(" ","icono_entrada");
      // this.getFTP().insertStringJTextPane("Recibiendo fichero: "+sFileName+newline,"entrada");
    } catch (ClusterNetInvalidParameterException e) {;
    } finally {
      return sFileName;
    }
  }
  /**
   * Recibir Identificador de cFtp ClusterNet v1.0
   *
   * @return true si se ha recibido el Identificador de cFtp, false en caso contrario
   */
  private boolean receiveIDFTPMulticast() throws IOException {
    boolean bOK = false;
    try {
      Buffer buf = new Buffer(5);

      // Leer Datos...
      this.id_socketIn.read(buf.getBuffer());

      // Comprobar MAGIC
      if (buf.getInt(0) != 0x6DED757B) return bOK;

      // Comprobar VERSION
      if (buf.getByte(4) != 0x01) return bOK;

      bOK = true;

      Log.log("Iniciando la recepción cFtp...", "");

    } finally {
      return bOK;
    }
  }
  /**
   * Comprobar Tamaño del Fichero
   *
   * @param buf Un objeto Buffer con los datos.
   * @return lSize Tamaño del Fichero. 0 si hay un error
   */
  public static long parseFileSize(Buffer buf) throws IOException {
    long lFileSize = 0;
    try {
      // Obtener la longitud  del fichero...
      lFileSize = buf.getLong(8);

      // this.getFTP().insertStringJTextPane(" ","icono_entrada");
      // this.getFTP().insertStringJTextPane("Tamaño: "+lFileSize+newline,"entrada");

    } catch (ClusterNetInvalidParameterException e) {;
    } finally {
      return lFileSize;
    }
  }
  /**
   * Recibir Nombre del Fichero
   *
   * @return sFileName Nombre del Fichero
   */
  private String receiveFileName() throws IOException {
    String sFileName = null;
    byte[] bytes = null;
    try {
      Buffer buf = new Buffer(2);

      int iLong = 0;

      // Obtener la longitud del nombre del fichero...
      this.id_socketIn.read(buf.getBuffer());

      iLong = (int) buf.getShort(0);
      if (iLong > 0) bytes = new byte[iLong];
      this.id_socketIn.read(bytes);

      // Obtener el nombre del fichero...
      sFileName = new String(bytes);

      Log.log(
          "Receiving file: " + sFileName + " from sender: " + this.id_socketIn.getID_Socket(), "");
    } finally {
      return sFileName;
    }
  }