FTP客户端类未连接

时间:2013-03-21 08:35:47

标签: java ftp

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


try {
    client.connect("32.178.10.121");
    client.login("XXX", "XXX");

    //
    // Create an InputStream of the file to be uploaded
    //
    String filename = "Touch.dat";
    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.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:162)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:250)
    at forTesting.FileUploadDemo.main(FileUploadDemo.java:15)

2 个答案:

答案 0 :(得分:3)

首先尝试设置代理详细信息,如下所示

FTPClient ftp = new FTPHTTPClient(proxyHost, proxyPort, proxyUser, proxyPassword);

然后尝试连接,如果错误消失,请告诉我。
如果错误仍然存​​在,请检查FTP服务器的防火墙设置。还尝试使用某些GUI工具(如Filezilla)连接系统以连接到服务器。

答案 1 :(得分:1)

如果您位于防火墙或代理服务器后面,可能需要尝试使用PASV模式。看看here

  

在客户端位于防火墙后面且无法访问的情况下   接受传入的TCP连接,可以使用被动模式。在这   模式,客户端使用控制连接发送PASV命令   服务器然后接收服务器IP地址和服务器端口   来自服务器的编号,然后客户端使用该编号来打开   从任意客户端端口到服务器IP地址的数据连接   收到的服务器端口号。