/** * @param host * @param ftpUser * @param ftpPassword * @throws FtpException */ private void conn(String host, String ftpUser, String ftpPassword) throws FtpException { try { ftp.connect(host); boolean islogin = ftp.login(ftpUser, ftpPassword); if (!islogin) { throw new FtpException("login FTP Host Fail!"); } String passiveMode = CIAConfig.get("FTPPASSIVEMODE"); if (passiveMode != null && passiveMode.equals("remote")) { ftp.enterRemotePassiveMode(); } if (passiveMode != null && passiveMode.equals("local")) { ftp.enterLocalPassiveMode(); } } catch (FtpException ex) { close(); logger.info("FTP server initializtion error." + host); throw new FtpException("ftp init error!!" + ex.getMessage()); } catch (Exception ex) { close(); logger.info("FTP server initializtion error." + host); throw new FtpException("ftp init error!!" + ex.getMessage()); } }
/** * @param host * @param port * @param ftpUser * @param ftpPassword * @throws FtpException */ private void conn(String host, int port, String ftpUser, String ftpPassword) throws FtpException { try { ftp.connect(host, port); boolean islogin = ftp.login(ftpUser, ftpPassword); if (!islogin) { close(); throw new FtpException("Login Host Fail!"); } String passiveMode = CIAConfig.get("FTPPASSIVEMODE"); if (passiveMode != null && passiveMode.equals("remote")) { ftp.enterRemotePassiveMode(); } if (passiveMode != null && passiveMode.equals("local")) { ftp.enterLocalPassiveMode(); } System.out.println( host + " Login Host Succ,Current Path[ " + ftp.printWorkingDirectory() + "]"); } catch (FtpException ex) { close(); logger.info("FTP server initializtion error." + host); throw new FtpException("ftp init error!!" + ex.getMessage()); } catch (Exception ex) { close(); logger.info("FTP server initializtion error." + host); throw new FtpException("ftp init error!!" + ex.getMessage()); } }
public static final void main(String[] args) { String server1, username1, password1, file1; String server2, username2, password2, file2; String[] parts; int port1 = 0, port2 = 0; FTPClient ftp1, ftp2; ProtocolCommandListener listener; if (args.length < 8) { System.err.println( "Usage: ftp <host1> <user1> <pass1> <file1> <host2> <user2> <pass2> <file2>"); System.exit(1); } server1 = args[0]; parts = server1.split(":"); if (parts.length == 2) { server1 = parts[0]; port1 = Integer.parseInt(parts[1]); } username1 = args[1]; password1 = args[2]; file1 = args[3]; server2 = args[4]; parts = server2.split(":"); if (parts.length == 2) { server2 = parts[0]; port2 = Integer.parseInt(parts[1]); } username2 = args[5]; password2 = args[6]; file2 = args[7]; listener = new PrintCommandListener(new PrintWriter(System.out), true); ftp1 = new FTPClient(); ftp1.addProtocolCommandListener(listener); ftp2 = new FTPClient(); ftp2.addProtocolCommandListener(listener); try { int reply; if (port1 > 0) { ftp1.connect(server1, port1); } else { ftp1.connect(server1); } System.out.println("Connected to " + server1 + "."); reply = ftp1.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp1.disconnect(); System.err.println("FTP server1 refused connection."); System.exit(1); } } catch (IOException e) { if (ftp1.isConnected()) { try { ftp1.disconnect(); } catch (IOException f) { // do nothing } } System.err.println("Could not connect to server1."); e.printStackTrace(); System.exit(1); } try { int reply; if (port2 > 0) { ftp2.connect(server2, port2); } else { ftp2.connect(server2); } System.out.println("Connected to " + server2 + "."); reply = ftp2.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp2.disconnect(); System.err.println("FTP server2 refused connection."); System.exit(1); } } catch (IOException e) { if (ftp2.isConnected()) { try { ftp2.disconnect(); } catch (IOException f) { // do nothing } } System.err.println("Could not connect to server2."); e.printStackTrace(); System.exit(1); } __main: try { if (!ftp1.login(username1, password1)) { System.err.println("Could not login to " + server1); break __main; } if (!ftp2.login(username2, password2)) { System.err.println("Could not login to " + server2); break __main; } // Let's just assume success for now. ftp2.enterRemotePassiveMode(); ftp1.enterRemoteActiveMode( InetAddress.getByName(ftp2.getPassiveHost()), ftp2.getPassivePort()); // Although you would think the store command should be sent to server2 // first, in reality, ftp servers like wu-ftpd start accepting data // connections right after entering passive mode. Additionally, they // don't even send the positive preliminary reply until after the // transfer is completed (in the case of passive mode transfers). // Therefore, calling store first would hang waiting for a preliminary // reply. if (ftp1.remoteRetrieve(file1) && ftp2.remoteStoreUnique(file2)) { // if(ftp1.remoteRetrieve(file1) && ftp2.remoteStore(file2)) { // We have to fetch the positive completion reply. ftp1.completePendingCommand(); ftp2.completePendingCommand(); } else { System.err.println("Couldn't initiate transfer. Check that filenames are valid."); break __main; } } catch (IOException e) { e.printStackTrace(); System.exit(1); } finally { try { if (ftp1.isConnected()) { ftp1.logout(); ftp1.disconnect(); } } catch (IOException e) { // do nothing } try { if (ftp2.isConnected()) { ftp2.logout(); ftp2.disconnect(); } } catch (IOException e) { // do nothing } } }