在尝试写一个FTP客户端软件,现在能够正常登录,可是无法显示服务器列表
输入:LIST
输出:425 Cannot open data connection进行了如下尝试:
输入:PASV
输出:227 Entering Passive Mode (*,*,*,*,131,132)
输入:LIST
输出:425 Cannot open data connection输入:PORT *,*,*,*,10,223
输出:200 Port command successful.
输入:LIST
输出:425 Cannot open data connection

解决方案 »

  1.   

    PWD,CWD命令正常,ftp服务器正常(能够使用flashFXP上传下载),代码如下import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;public class FTP
    {
    private BufferedReader ftpBr;
    private BufferedWriter ftpBw;
    private BufferedReader stdBr = new BufferedReader(new InputStreamReader(System.in));
    private boolean run = true;

    public FTP()
    {
    try
    {
    connect();
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    }
    }

    public void connect() throws Exception
    {
    String temp;
    System.out.println("Input the ip address:");
    String ip = stdBr.readLine();
    System.out.println("Input the port:");
    int port = Integer.parseInt(stdBr.readLine());
    Socket aim = new Socket(ip, port);
    ftpBr = new BufferedReader(new InputStreamReader(aim.getInputStream()));
    ftpBw = new BufferedWriter(new OutputStreamWriter(aim.getOutputStream()));
    new Thread()
    {
    public void run()
    {
    try
    {
    String temp;
    while(run)
    {
    temp = ftpBr.readLine();
    if(temp == null)
    {
    break;
    }
    System.out.println(temp);
    }
    ftpBr.close();
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    return;
    }
    }
    }.start();

    while(!(temp = stdBr.readLine()).equals("QUIT"))
    {
    ftpBw.write(temp);
    ftpBw.newLine();
    ftpBw.flush();
    }

    ftpBw.write(stdBr.readLine());
    ftpBw.newLine();
    ftpBw.flush();
    ftpBw.close();
    stdBr.close();
    run = false;
    }

    public static void main(String[] args)
    {
    new FTP();
    }
    }