`/* * * Copyright (C) 2006 Enterprise Distributed Technologies Ltd * * www.enterprisedt.com */ import com.enterprisedt.net.ftp.FileTransferClient; import com.enterprisedt.net.ftp.EventListener; import com.enterprisedt.net.ftp.FTPTransferType; import com.enterprisedt.util.debug.Level; import com.enterprisedt.util.debug.Logger; import java.io.File; public class MonitorTransfersCommands { public static void main(String[] args) { // we want remote host, user name and password if (args.length < 3) { System.out .println("Usage: run remote-host username password"); System.exit(1); } // extract command-line arguments String host = args[0]; String username = args[1]; String password = args[2]; // set up logger so that we get some output Logger log = Logger.getLogger(MonitorTransfersCommands.class); Logger.setLevel(Level.INFO); FileTransferClient ftp = null; try { // create client log.info("Creating FTP client"); ftp = new FileTransferClient(); // set remote host ftp.setRemoteHost(host); ftp.setUserName(username); ftp.setPassword(password); // set up listener ftp.setEventListener(new EventListenerImpl()); // the transfer notify interval must be greater than buffer size ftp.getAdvancedFTPSettings().setTransferBufferSize(500); ftp.getAdvancedFTPSettings().setTransferNotifyInterval(1000); // connect to the server log.info("Connecting to server " + host); ftp.connect(); log.info("Connected and logged in to server " + host); log.info("Uploading file"); String name = "MonitorTransfersCommands.java"; // put the file ftp.uploadFile(name, name); log.info("File uploaded"); // now delete remote file ftp.deleteFile(name); // Shut down client log.info("Quitting client"); ftp.disconnect(); log.info("Example complete"); } catch (Exception e) { e.printStackTrace(); } } } /** * Listens to events */ class EventListenerImpl implements EventListener { private Logger log = Logger.getLogger(EventListenerImpl.class); public void bytesTransferred(long bytes) { log.info("Bytes transferred=" + bytes); } /** * Log an FTP command being sent to the server. Not used for SFTP. * * @param cmd command string */ public void commandSent(String cmd) { log.info("Command sent: " + cmd); } /** * Log an FTP reply being sent back to the client. Not used for * SFTP. * * @param reply reply string */ public void replyReceived(String reply) { log.info("Reply received: " + reply); } /** * Notifies that a download has started * * @param remoteFilename remote file name */ public void downloadStarted(String remoteFilename) { log.info("Started download: " + remoteFilename); } /** * Notifies that a download has completed * * @param remoteFilename remote file name */ public void downloadCompleted(String remoteFilename) { log.info("Completed download: " + remoteFilename); } /** * Notifies that an upload has started * * @param remoteFilename remote file name * @param append true if appending */ public void uploadStarted(String remoteFilename) { log.info("Started upload: " + remoteFilename); } /** * Notifies that an upload has completed * * @param remoteFilename remote file name * @param append true if appending * @param ex exception if it occurred */ public void uploadCompleted(String remoteFilename) { log.info("Completed upload: " + remoteFilename); } }`