在Android中使用FTP本地被动模式拒绝连接

时间:2012-04-07 12:17:21

标签: java android ftp

我目前正在开发一个Android应用程序,必须将自己连接到本地FTP服务器(我正在使用Filezilla服务器)。 我已经下载了org.commons.apache.net ftp librabry。

这是我的Android项目相关代码:

    FTPClient mFTPClient = new FTPClient();

    try {
        mFTPClient = new FTPClient();
        mFTPClient.connect("10.0.2.2", 21);

        if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
            mFTPClient.login("lucas", "elie");
            mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
            mFTPClient.enterLocalPassiveMode();
        }

    } catch (SocketException e) {
        Log.e("TEST", "SocketException: " + e.getStackTrace().toString() + " " + e.getMessage());
    } catch (UnknownHostException e) {
        Log.e("TEST", "UnknownHostException: " + e.getStackTrace().toString() + " " + e.getMessage());
    } catch (IOException e) {
        Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
    }

    //

    FileOutputStream desFileStream;
    try {
        desFileStream = new FileOutputStream("/mnt/sdcard/sample_0.jpg");
        mFTPClient.retrieveFile("/sample_0.jpg", desFileStream);
        desFileStream.close();
    } catch (FileNotFoundException e) {
        Log.e("TEST", "FileNotFoundException: " + e.getStackTrace().toString() + " " + e.getMessage());
    } catch (IOException e) {
        Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
    }

连接正常(mFTPClient.connect(“10.0.2.2”,21);),因为我可以在我的本地服务器界面上看到它,但是当我试图下载我的文件时(mFTPClient.retrieveFile(“ /sample_0.jpg“,desFileStream);),我在Logcat中得到一个IOException:

04-07 11:25:26.300:E / TEST(671):IOException:[Ljava.lang.StackTraceElement; @ 412ca688无法连接到/127.0.0.1(端口2832):连接失败:ECONNREFUSED(连接被拒绝) )

我确切地说,我在Android Manifest XML文件中添加了这两行:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

使用完全相同的代码,但在经典的Java项目中而不是Android项目中,所有工作都完美无缺(将10.0.2.2替换为127.0.0.1,将“/ mnt / sdcard”替换为“C:\”)!< / p>

有人可以帮我吗?

编辑:我发现了我的错误。如果这可以帮助某人,我只需要用我的本地IP地址替换10.0.2.2(在我的情况下为192.168.0.5)

0 个答案:

没有答案