FTP クライアントの Java 実装に行き詰まりました。FTP サーバーに接続して、1 つのファイルをサーバーに転送するだけです。
ftp サーバーとの接続に成功し (以下のコードを参照)、その後、PASV コマンドでパッシブ モードに入りました。今、私は次に何をすべきかわかりません。PASV コマンドの後に新しいソケットを作成し、それを FTP サーバーのポート 20 に接続しようとしましたが、うまくいきませんでした。
私の質問は、接続が確立されたときにファイル転送を開始する方法ですか? (私の考えでは、ポート 20 に接続して STOR コマンドを実行することですが、方法がわかりません)。
アイデアや役立つアドバイスはありますか?
ところで。FTPClient のような Java クラスを使用せずにこれを実装する必要があります
これが私のコードです:
public class FTPtest {
Socket socket;
PrintWriter pw;
BufferedReader input;
String info = "";
public FTPtest(){
try{
socket = new Socket("some_ftp_server", 21);
logUsername();
closeEverything();
}
catch(IOException ioe){
System.out.println("error");
}
}
public void logUsername()throws IOException{
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream());
//user
pw.write("USER some_user\n");
pw.flush();
System.out.println(input.readLine());
//pass
pw.write("PASS some_pass");
pw.flush();
System.out.println(input.readLine());
System.out.println(input.readLine());
//PASV
pw.write("PASV");
pw.flush();
}
public void closeEverything() throws IOException{
input.close();
pw.close();
socket.close();
}
public static void main(String[]args){
new FTPtest();
}
}