code: public void extendedTransfer(String remoteSrcFile,
                                   long remoteSrcFileOffset,
                                   long remoteSrcFileLength,
                                   GridFTPClient destination,
                                   String remoteDstFile,
                                   long remoteDstFileOffset,
                                   MarkerListener mListener)
          throws IOException, ServerException, ClientException {
  
          // FIXME: ESTO & ERET do not require MODE E this needs to be fixed
  
          // servers support GridFTP?
          checkGridFTPSupport();
          destination.checkGridFTPSupport();
          // all parameters set correctly (or still unset)?
          gSession.matches(destination.gSession);
  
          //mode E
          if (gSession.transferMode != GridFTPSession.MODE_EBLOCK) {
              throw new ClientException(ClientException.BAD_MODE,
                  "Extended transfer mode is necessary");
          }
  
          // if transfer modes have not been defined,
          // set this (source) as active
          if (gSession.serverMode == Session.SERVER_DEFAULT) {
              HostPort hp = destination.setPassive();
              this.setActive(hp);
          }
  
          Command estoCmd =
              new Command("ESTO",
                          "A " + remoteDstFileOffset + " " + remoteDstFile);
          destination.controlChannel.write(estoCmd);
  
          Command eretCmd =
              new Command("ERET",
                          "P " + remoteSrcFileOffset + " " + remoteSrcFileLength
                          + " " + remoteSrcFile);
  
          controlChannel.write(eretCmd);
  
          transferRunSingleThread(destination.controlChannel, mListener);
      }
docs: Performs a third-party transfer between two servers using extended
  block mode.
  If server modes are unset, source will be set to active
  and destination to passive.
  
  @param remoteSrcFile source filename
  @param remoteSrcFileOffset source filename offset
  @param remoteSrcFileLength source filename length to transfer
  @param destination   destination server
  @param remoteDstFile destination filename
  @param remoteDstFileOffset destination filename offset
  @param mListener     transer progress listener.
  Can be set to null.