Zum Zeitpunkt des Hochladens von Dateien vom lokalen Computer auf den FTP-Server wird ein Verbindungsfehler angezeigt

Ich versuche, Dateien von der lokalen Maschine zum ftp-Server hochzuladen, und wenn dieser Code zuerst beginnt, speichert er 6 Ordnerdaten erfolgreich auf ftp-Server aber vom 7. Ordner zum 25. Ordner, den ich Verbindung verbanne Fehler erhalte ... Es gibt keine Beschränkung von der Klientenseite für Verbindungen und nur ich verwende diese Anmeldeinformationen für Testzwecke. Kann mir jemand helfen?
Ich bekomme dieses Problem wegen Spiegelproblem im Code, aber ich bin nicht in der Lage, dieses Problem zu lösen. Bitte hilf mir

package com.epath.smoketest.tests;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPSClient;


public class FTPUploadDirectoryTest {

    public static void main(String[] args) {
        try {
            System.out.println("\n"
                    + "---------------------------------------------------------------------------------" + "\r\n");
            System.out.println("Read FTP Login details from PROPERTIES file" + "\r\n");
            System.out.println(
                    "---------------------------------------------------------------------------------" + "\r\n");

            Properties prop = new Properties();
            InputStream input = null;

            String inputFS = getAutomationInputDataPath() + "//Validation.properties";
            input = new FileInputStream(inputFS);
            prop.load(input);

           //-Input file with test data
            System.out.println("Uploading file on ftp server");
            String ftp_port = prop.getProperty("ftp_port");         
            int ftp_host = Integer.parseInt(prop.getProperty("ftp_host"));          
            String ftp_username = prop.getProperty("ftp_username");         
            String ftp_password = prop.getProperty("ftp_password");         

            String server = ftp_port;
            int port = ftp_host;
            String user = ftp_username;
            String pass = ftp_password;

            FTPSClient ftpClient = new FTPSClient();

           //connect and login to the server
            ftpClient.connect(server, port);
            ftpClient.login(user, pass);

           //use local passive mode to pass firewall
            ftpClient.enterLocalPassiveMode();

            System.out.println("Connected");
            String remoteDirPath = "/www/ngage/screenshots";
            String localDirPath = folderPathForUploadingOnFTP;

            uploadDirectory(ftpClient, remoteDirPath, localDirPath, "");

           //log out and disconnect from the server
            ftpClient.logout();
            ftpClient.disconnect();

            System.out.println("Disconnected");
        } catch (IOException ex) {
            System.err.println("Error occured....." + ex.getMessage());
            ex.printStackTrace();
        }
    }


    public static void uploadDirectory(FTPSClient ftpClient, String remoteDirPath, String localParentDir,
            String remoteParentDir) throws IOException {

        File localDir = new File(localParentDir);
        File[] subFiles = localDir.listFiles();
        if (subFiles != null && subFiles.length > 0) {
            for (File item : subFiles) {
                String remoteFilePath = remoteDirPath + "/" + remoteParentDir + "/" + item.getName();
                if (remoteParentDir.equals("")) {
                    remoteFilePath = remoteDirPath + "/" + item.getName();
                }
                if (item.isFile()) {                    
                    if (!checkFileExists(remoteFilePath, ftpClient)) {
                       //upload the file
                        String localFilePath = item.getAbsolutePath();                      
                        boolean uploaded = uploadSingleFile(ftpClient, localFilePath, remoteFilePath);
                        if (uploaded) {
                            System.out.println("UPLOADED a file to: " + remoteFilePath);
                        } else {
                            System.out.println("COULD NOT upload the file: " + localFilePath);
                        }
                    } else {
                        System.out.println("This file alerady exist on ftp server ");
                    }
                } else {
                   //create directory on the server
                    boolean created = ftpClient.makeDirectory(remoteFilePath);
                    if (created) {
                        System.out.println("CREATED the directory: " + remoteFilePath);
                    } else {
                        System.out.println("COULD NOT create the directory: " + remoteFilePath);
                    }
                   //upload the sub directory
                    String parent = remoteParentDir + "/" + item.getName();
                    if (remoteParentDir.equals("")) {
                        parent = item.getName();
                    }
                    localParentDir = item.getAbsolutePath();
                    uploadDirectory(ftpClient, remoteDirPath, localParentDir, parent);
                }
            }
        }
        ftpClient.makeDirectory(remoteDirPath);
    }

    public static boolean uploadSingleFile(FTPSClient ftpClient, String localFilePath, String remoteFilePath)
            throws IOException {
        File localFile = new File(localFilePath);
        InputStream inputStream = new FileInputStream(localFile);
        try {
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            return ftpClient.storeFile(remoteFilePath, inputStream);
        } finally {
            inputStream.close();
        }       
    }

    public static Boolean checkFileExists(String filePath, FTPSClient ftpClient) throws IOException {
        InputStream inputStream = ftpClient.retrieveFileStream(filePath);
        int returnCode = ftpClient.getReplyCode();      
        if (inputStream == null || returnCode == 550) {
            return false;
        }
        inputStream.close();
        return true;
    }

}




Error coming .

COULD NOT upload the file: \\192.168.10.21\volume1\ngage_dev\engineering\ngage\testing\automated\validation\Build_1.19.1\051\2018-04-23_07-54-39_AM\TC_UA_PSWD_0001_006_1.png
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:920)
at org.apache.commons.net.ftp.FTPSClient._openDataConnection_(FTPSClient.java:627)
at org.apache.commons.net.ftp.FTPClient._retrieveFileStream(FTPClient.java:1980)
at org.apache.commons.net.ftp.FTPClient.retrieveFileStream(FTPClient.java:1967)
at com.epath.smoketest.tests.FTPUploadDirectoryTest.checkFileExists(FTPUploadDirectoryTest.java:124)
0
@MartinPrikryl Ich kann alle Dateien hochladen, wenn ich diesen Code in " codejava.net/java-se/networking/ftp/… ; aber ich habe einige Änderungen am Code vorgenommen, weil nur ein paar Ordner hochgeladen werden FTP-Server
hinzugefügt der Autor Tarun Dabbs, Quelle
@MartinPrikryl Dieser Code funktioniert, aber das ist nicht nach meiner Client-Anforderung. Ich habe einige Änderungen gemäß meiner Projektanforderung vorgenommen. Nur für Testzwecke habe ich diesen Website-Code verwendet und das funktioniert, aber dieser Code vervollständigt meine Anforderung nicht. Nachdem ich einige Änderungen im Code vorgenommen habe, erhalte ich einen Verbindungsfehler.
hinzugefügt der Autor Tarun Dabbs, Quelle
@MartinPrikryl Ich habe gerade überprüft, dass ich die Rückgabe falsch ändere und immer noch bekomme ich Verbindung ablehnen Fehler. an gleicher Stelle
hinzugefügt der Autor Tarun Dabbs, Quelle
@RemyLebeau Danke für deine Antwort. Mein Szenario ist: - Derzeit ist auf dem FTP-Server kein Ordner verfügbar. Wenn ich diesen Code ausführe und versuche, alle Ordner in ftp gleichzeitig zu senden, funktioniert dieser Code. Wenn ich diese Methode in @ anrufe, werden sich die Daten mit der Ausführung des Testfalls bewegen. Und nach jedem Testfall wird der Ordner vom lokalen Rechner auf den FTP-Server übertragen. Ich erhalte diesen Fehler, wenn ich einen vorhandenen Ordner in ftp habe und versuche, den Ordner einzeln hochzuladen.
hinzugefügt der Autor Tarun Dabbs, Quelle
@ RemyLebeau: - Danke, Remy.
hinzugefügt der Autor Tarun Dabbs, Quelle
Können Sie denselben Satz von Dateien mit einem eigenständigen FTP-Client hochladen, der auf demselben Computer wie Ihr Java-Code ausgeführt wird?
hinzugefügt der Autor Martin Prikryl, Quelle
Sagst du wirklich, dass du einen funktionierenden Code hast und du dich nicht darum gekümmert hast, uns in deiner Frage an erster Stelle zu sagen ???
hinzugefügt der Autor Martin Prikryl, Quelle
Mit anderen Worten: Wenn Sie checkFileExists bedingungslos false setzen, funktioniert der Code?
hinzugefügt der Autor Martin Prikryl, Quelle
OK, aber Sie müssen uns das sagen! Sie verschwenden nur unsere Zeit, um herauszufinden, was Sie bereits wissen! + Du hast meine zweite Frage nicht beantwortet.
hinzugefügt der Autor Martin Prikryl, Quelle
OK, also finde heraus, welche Änderung das Problem verursacht hat. Wir werden Ihren Code nicht für Sie debuggen. Es ist Ihre Aufgabe, ein minimales, vollständiges und verifizierbares Beispiel zu veröffentlichen.
hinzugefügt der Autor Martin Prikryl, Quelle
Ein "Connection Refused" -Fehler bedeutet, dass der Client versucht, sich mit einem IP/Port zu verbinden (was bei einer Passive-Mode-Übertragung der Fall ist), dass entweder 1) nicht auf Verbindungen wartet; 2) hat zu viele ausstehende Verbindungen; oder 3) wird von einer Firewall/einem Router blockiert. Leider gibt es für einen Client keine Möglichkeit zu bestimmen, was der Fall ist, es kann nur eine Weile warten und es erneut versuchen, oder aufhören zu versuchen und weiterzugehen
hinzugefügt der Autor Remy Lebeau, Quelle
@TarunDabbs das ändert nichts, was ich gesagt habe. Ob ein Ordner existiert oder nicht, ist strittig. Einen Ordner auf Existenz testen und neue Ordner erstellen, das wird nur auf der Befehlsverbindung übergeben, die bereits eingerichtet ist. Nur bei der Übertragung von einzelnen Dateien wird diese über sekundäre Verbindungen übergeben, von wo die Fehlermeldung kommt.
hinzugefügt der Autor Remy Lebeau, Quelle