FTP接続テストでなんだかよくわからない状況になってしまったときのために簡単なFTP接続テストプログラムを作ったので、ついでに公開します。
commons-net 2.0を使ってます。
もしかしたら動かないかも?動かなかったらゴメンナサイで。
エラー処理とかもろもろはちゃんとしていないので、あくまでご参考までということでよろしくお願いします。
2009.7.7追記: コメントでご指摘いただいたエラー処理を少し追加しました。少しだけ立派になった!
package jp.netmark.ftptest; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class Ftptest { /** * @param args */ public static void main(String[] args) { if (args.length != 3) { System.err .println("args[0]=host, args[1]=username, args[2]=password"); System.exit(1); } String address = args[0]; String username = args[1]; String password = args[2]; boolean passiveOK = execute(address, username, password, true); boolean activeOK = execute(address, username, password, false); System.out.println("------------------------"); System.out.println("Check Result:"); System.out.println("Passive Mode\t=>" + (passiveOK ? "OK" : "NG")); System.out.println("Active Mode\t=>" + (activeOK ? "OK" : "NG")); } private static boolean execute(String address, String username, String password, boolean usePassiveMode) { boolean success = false; FTPClient client = new FTPClient(); try { System.out.println("connect"); client.connect(address); System.out.println(client.getReplyString()); client.login(username, password); System.out.println(client.getReplyString()); if (!FTPReply.isPositiveCompletion(client.getReplyCode())) { System.out.println("*** Login Failed ***"); client.disconnect(); return false; } if (usePassiveMode) { client.enterLocalPassiveMode(); System.out.println(client.getReplyString()); } else { client.enterLocalActiveMode(); System.out.println(client.getReplyString()); } client.pwd(); System.out.println(client.getReplyString()); String fileNames[] = client.listNames(); success = FTPReply.isPositiveCompletion(client.getReplyCode()); System.out.println(client.getReplyString()); if (fileNames != null) { for (int i = 0; i < fileNames.length; i++) { System.out.println(fileNames[i]); } } client.logout(); System.out.println(client.getReplyString()); client.disconnect(); } catch (Exception e) { if (client.isConnected()) { try { client.disconnect(); } catch (IOException ignore) { } } e.printStackTrace(); } return success; } }