Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 FTPClient在2次成功上载文件后连接超时_Java_Ftp_Ftp Client - Fatal编程技术网

Java FTPClient在2次成功上载文件后连接超时

Java FTPClient在2次成功上载文件后连接超时,java,ftp,ftp-client,Java,Ftp,Ftp Client,我正在使用FTPClient,通过定时器每30秒向FTP服务器发送一次文件,有趣的是,我在2次成功上传后出现连接超时错误,第三次不会发生,错误如下,使用不同的设置和相同的结果进行了多次测试 java.net.ConnectException: Connection timed out: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.

我正在使用FTPClient,通过定时器每30秒向FTP服务器发送一次文件,有趣的是,我在2次成功上传后出现连接超时错误,第三次不会发生,错误如下,使用不同的设置和相同的结果进行了多次测试

java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:171)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:285)
at com.xxxxx.PDF2VS.send2FTP(PDF2VS.java:87)
at com.xxxxx.PDF2VS$1.run(PDF2VS.java:35)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
这是我找到的发送文件的代码

   public static boolean send2FTP ()   
       {
          FTPClient client = new FTPClient();
          FileInputStream fis = null;

    try {
            //read from the 
            Properties prop = new Properties();
            InputStream in = PDF2VS.class.getResourceAsStream("/config.properties");

            prop.load(in);
            client.setControlKeepAliveTimeout(300);
            client.connect(prop.getProperty("FTP_ADDRESS"));
            client.login(prop.getProperty("UNAME"), prop.getProperty("PWD"));
            System.out.print("Message : " + client.getReplyString());

            client.setDefaultPort(Integer.parseInt(prop.getProperty("PORT")));
            int f1 = client.getDefaultPort();
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
            System.out.println("File transfer port no  " + f1);
            System.out.println("FTP server reply ." + client.getReplyString());

            String localfile = prop.getProperty("LOCAL_FILE");
            fis = new FileInputStream(localfile);

            int lastSlash = localfile.lastIndexOf('/');
            String filename = localfile.substring(lastSlash+1);

            System.out.println("Uploading: " + filename);
            System.out.println("file : "+fis);

            client.setFileTransferMode(2);
            System.out.println("Flag reply ." + client.getReplyString());

            boolean flag = client.storeFile(filename,fis);

            System.out.println("Flag reply ." + client.getReplyString());

            if (flag) {
                System.out.println("Successfully uploaded the file");

            } else {
                System.out.println("Not able to upload the file");
            }

            fis.close();
            client.logout();
            System.out.println("Logout ." + client.getReplyString());

            in.close();
    }
    catch (Exception e) 
    {
       e.printStackTrace();
    }
    finally 
    {
        if (client.isConnected()) {
            try {
                client.disconnect();
                System.out.println("Server Disconnected." + client.getReplyString());
            } catch (IOException ioe) {
                 ioe.printStackTrace();
            }
        }
    }

return true; 
} 

它确实工作了2次并收到错误,我做错了什么?

您是否检查过,服务器对于可以快速连续上传的文件数量没有限制?还有,文件有多大?不会发生两个文件同时传输的情况,对吗?(根据协议,FTP只能在每个控制连接上传输一个文件)我知道服务器可以处理任何文件,因为我可以用同一个文件手动测试,没有问题。文件arr 17kb。同时无传输,延迟30秒。感谢您的关注。这可能是因为您每次都在登录和注销吗?如果你使用相同的连接会发生什么?也尝试过,运气不好,谢谢你的回复。你解决过这个问题吗?