3
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)
4

2 回答 2

3

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

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

然后尝试按照您的操作进行连接,并让我知道错误是否消失。
如果错误仍然存​​在,请检查 FTP 服务器的防火墙设置。还尝试使用 Filezilla 等 GUI 工具从系统连接以连接到服务器。

于 2013-03-21T10:23:16.813 回答
1

如果您在防火墙或代理后面,您可能想尝试使用 PASV 模式。看看这里

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

于 2013-03-21T10:59:27.120 回答