Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache FTP:可以连接,但可以';t上传_Java_Ftp - Fatal编程技术网

Java Apache FTP:可以连接,但可以';t上传

Java Apache FTP:可以连接,但可以';t上传,java,ftp,Java,Ftp,我在JAVA中使用这段代码 FTPClient client = new FTPClient(); FileInputStream fis = null; try { client.connect("ftp.serverapp.amon-internet.com"); client.login("u780746385", "serverapp"); //client.changeWorkingDirectory(

我在JAVA中使用这段代码

    FTPClient client = new FTPClient();
    FileInputStream fis = null;

    try 
    {
        client.connect("ftp.serverapp.amon-internet.com");
        client.login("u780746385", "serverapp");
        //client.changeWorkingDirectory("/");
        //client.setFileType(org.apache.commons.net.ftp.FTP.ASCII_FILE_TYPE); 
        //client.enterLocalPassiveMode();

        //
        // Create an InputStream of the file to be uploaded
        //
        String filename = "test.txt";
        fis = new FileInputStream(filename);

        //
        // Store file to server
        //
        client.storeFile(filename, fis);
        client.logout();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    } 
    finally 
    {
        try 
        {
            if (fis != null) 
            {
                fis.close();
            }

            client.disconnect();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
所以它可以连接,但当它试图上传我的文件时,它会说:

    java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.io.BufferedWriter.flush(Unknown Source)
at org.apache.commons.net.ftp.FTP.__send(FTP.java:505)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:479)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:608)
at org.apache.commons.net.ftp.FTP.port(FTP.java:932)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:812)
at org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:633)
at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:624)
at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1976)
at Waar.Waar.<init>(Waar.java:67)
at Waar.Waar.main(Waar.java:626)

这是本地网络吗?通过internet,您可能需要
client.enterLocalPassiveMode()被动模式需要从NAT路由器后面ftp到internet服务器。这是因为每次需要传输数据时都需要一个新的连接。@ElliottFrisch它是通过internet传输的,当我使用client.enterLocalPassiveMode()时,它表示权限被拒绝
Process p = Runtime.getRuntime().exec("netsh advfirewall set global StatefulFTP disable");
        p.waitFor();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
        String line = reader.readLine();
        while (line != null) 
        {
             line = reader.readLine();
        }