اتصال رفض خطأ قادم في وقت تحميل الملفات من الجهاز المحلي إلى خادم بروتوكول نقل الملفات

أحاول تحميل الملفات من الجهاز المحلي إلى خادم ftp وعندما يبدأ هذا الكود أولاً بتخزين 6 مجلدات البيانات على الخادم ftp بنجاح ولكن من المجلد 7 إلى المجلد 25 أنا أتلقى خطأ رفض الاتصال ... لا يوجد أي قيود من جانب العميل للاتصالات وأنا أستخدم أوراق الاعتماد هذه فقط لغرض الاختبار. هل يستطيع أحد مساعدتي؟
أتلقى هذه المشكلة نظرًا لوجود مشكلة في النسخة المتطابقة من التعليمات البرمجية ، ولكنني غير قادر على معرفة هذه المشكلة. الرجاء مساعدتي

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 يمكنني تحميل الملف بأكمله إذا كنت أستخدم هذا الرمز في " codejava.net/java-se/networking/ftp/&hellip؛ ؛ لكنني أجريت بعض التعديلات في الشفرة نظرًا لحدوث تحميل بعض بيانات المجلد فقط خادم بروتوكول نقل الملفات
وأضاف المؤلف Tarun Dabbs, مصدر
MartinPrikryl يعمل هذا الرمز ولكن هذا ليس حسب متطلبات العميل. لقد قمت ببعض التعديلات حسب متطلبات مشروعي. فقط لغرض الاختبار استخدمت شفرة موقع الويب وهذا يعمل ولكن هذا الرمز لا يكمل متطلباتي. بعد إجراء بعض التغييرات في الكود ، فأنا أحصل على خطأ رفض الاتصال.
وأضاف المؤلف Tarun Dabbs, مصدر
MartinPrikryl أنا فقط التحقق من أنني غيرت العودة كاذبة وما زلت أتلقى خطأ رفض الاتصال. في نفس النقطة
وأضاف المؤلف Tarun Dabbs, مصدر
ردًا علىRemyLebeau سيناريو هو: - حاليا لا يوجد مجلد متاح في خادم FTP. إذا كنت أقوم بتنفيذ هذا الكود وأحاول إرسال كل مجلد في ftp في نفس الوقت فإن هذا الرمز يعمل. عندما أتصل بهذه الطريقة في @ بعد ذلك ، ستتحرك البيانات مع تنفيذ حالة الاختبار. وبعد كل مجلد الحالة اختبار سوف ينتقل من الجهاز المحلي إلى خادم بروتوكول نقل الملفات. أتلقى هذا الخطأ عندما يكون لدي مجلد موجود في ftp وأحاول تحميل المجلد واحدًا تلو الآخر.
وأضاف المؤلف Tarun Dabbs, مصدر
RemyLebeau: - شكرا ريمي.
وأضاف المؤلف Tarun Dabbs, مصدر
هل يمكنك تحميل نفس مجموعة الملفات باستخدام أي برنامج FTP مستقل يعمل على نفس الجهاز مثل رمز جافا الخاص بك؟
وأضاف المؤلف Martin Prikryl, مصدر
هل أنت حقاً تقول إن لديك رمز عمل وأنت لا تهتم بإخبارنا في سؤالك في المقام الأول ؟؟؟
وأضاف المؤلف Martin Prikryl, مصدر
وبعبارة أخرى ، إذا جعلت checkFileExists return false دون قيد أو شرط ، فإن الشفرة تعمل؟
وأضاف المؤلف Martin Prikryl, مصدر
حسنًا ، لكن عليك إخبارنا بذلك! أنت تهدر وقتنا لمعرفة ما تعرفه بالفعل! + أنت لم تجب عن سؤالي الثاني.
وأضاف المؤلف Martin Prikryl, مصدر
حسنًا ، يمكنك معرفة التغيير الذي تسبب في المشكلة. لن نقوم بتصحيح التعليمات البرمجية نيابة عنك. انها مهمة لإضافة الحد الأدنى، كاملة، ويمكن التحقق منها مثلا .
وأضاف المؤلف Martin Prikryl, مصدر
يعني خطأ "رفض الاتصال" العميل يحاول الاتصال بـ IP/Port (وهو الحالة في نقل وضع الخامل) التي إما 1) لا يستمع للاتصالات؛ 2) لديها الكثير من الاتصالات المعلقة ؛ أو 3) يتم حظره بواسطة جدار الحماية/جهاز التوجيه. لسوء الحظ ، لا توجد طريقة للعميل لتحديد ما هي الحالة ، كل ما يمكنه فعله هو الانتظار لفترة قصيرة والمحاولة مرة أخرى ، أو التوقف عن المحاولة والانتقال
وأضاف المؤلف Remy Lebeau, مصدر
TarunDabbs لا يغير ما قلته. ما إذا كان مجلد موجود أم لا هو موضع نقاش. اختبار مجلد للوجود ، وإنشاء مجلدات جديدة ، يتم تسليم كل ذلك فقط على اتصال الأمر ، الذي تم إنشاؤه بالفعل. فقط عند نقل الملفات الفردية ، يتم تسليمها باستخدام اتصالات ثانوية ، ومن هنا تأتي رسالة الخطأ.
وأضاف المؤلف Remy Lebeau, مصدر