- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用带有 Java 8 的 Apache Commons Net (v3.5) 连接到远程 FTPS 站点(即在互联网上)。我可以轻松地连接到我的 Windows 10 机器上的 FileZilla 客户端,但我的 Java 程序无法完成相同的步骤。我用谷歌搜索了高低,但找不到根本原因。以下是我已确认的内容:
下面是代码,任何想法都非常感谢:
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPSClient;
public class testProgram {
public static void main(String[] args) {
String ftpServer = "ftp.domain.com";
String ftpUsername = "user@domain.com";
String ftpPassword = "********";
FTPSClient ftp = null;
// CONNECT TO THE SERVER
try {
// I have tried "SSL" as the argument, but same result
ftp = new FTPSClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
ftp.connect(ftpServer,21);
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("---------->FTP server refused connection.\n");
}
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
// LOGIN INTO SERVER
try {
if (!ftp.login(ftpUsername, ftpPassword)) {
ftp.logout();
} else {
ftp.sendCommand("OPTS UTF8 ON");
ftp.execPBSZ(0);
ftp.execPROT("P");
ftp.pwd();
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
/* The next command always fails.
The FTP Server responds with "150 Accepted data connection" then:
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:316)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:292)
at org.apache.commons.net.ftp.FTP.getReply(FTP.java:712)
at org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1857)
at org.apache.commons.net.ftp.FTPClient.listNames(FTPClient.java:2919)
at org.apache.commons.net.ftp.FTPClient.listNames(FTPClient.java:2952)
at myPackage.testProgram.main(testProgram.java:78)
I have tried other commands, but it disconnects here...
*/
FTPFile[] ftpFiles = ftp.listFiles();
System.out.println("---------->Number of Files = " + ftpFiles.length);
ftp.logout();
}
} catch (Exception e) {
e.printStackTrace();
}
//Ensure Disconnected at the end.
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException f) {
// do nothing
}
}
}
}
这是来 self 的 PC 的 FileZilla 客户端日志:
2016-09-06 09:09:50 4756 1 Status: Resolving address of ftp.domain.com
2016-09-06 09:09:51 4756 1 Status: Connecting to h1.h2.h3.h4:21...
2016-09-06 09:09:51 4756 1 Status: Connection established, waiting for welcome message...
2016-09-06 09:09:51 4756 1 Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
2016-09-06 09:09:51 4756 1 Response: 220-You are user number 2 of 50 allowed.
2016-09-06 09:09:51 4756 1 Response: 220-Local time is now 13:09. Server port: 21.
2016-09-06 09:09:51 4756 1 Response: 220-This is a private system - No anonymous login
2016-09-06 09:09:51 4756 1 Response: 220-IPv6 connections are also welcome on this server.
2016-09-06 09:09:51 4756 1 Response: 220 You will be disconnected after 15 minutes of inactivity.
2016-09-06 09:09:51 4756 1 Command: AUTH TLS
2016-09-06 09:09:51 4756 1 Response: 234 AUTH TLS OK.
2016-09-06 09:09:51 4756 1 Status: Initializing TLS...
2016-09-06 09:09:51 4756 1 Status: Verifying certificate...
2016-09-06 09:09:51 4756 1 Status: TLS connection established.
2016-09-06 09:09:51 4756 1 Command: USER user@domain.com
2016-09-06 09:09:51 4756 1 Response: 331 User user@domain.com OK. Password required
2016-09-06 09:09:51 4756 1 Command: PASS *************
2016-09-06 09:09:51 4756 1 Response: 230 OK. Current restricted directory is /
2016-09-06 09:09:51 4756 1 Command: SYST
2016-09-06 09:09:51 4756 1 Response: 215 UNIX Type: L8
2016-09-06 09:09:51 4756 1 Command: FEAT
2016-09-06 09:09:51 4756 1 Response: 211-Extensions supported:
2016-09-06 09:09:51 4756 1 Response: EPRT
2016-09-06 09:09:51 4756 1 Response: IDLE
2016-09-06 09:09:51 4756 1 Response: MDTM
2016-09-06 09:09:51 4756 1 Response: SIZE
2016-09-06 09:09:51 4756 1 Response: MFMT
2016-09-06 09:09:51 4756 1 Response: REST STREAM
2016-09-06 09:09:51 4756 1 Response: MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
2016-09-06 09:09:51 4756 1 Response: MLSD
2016-09-06 09:09:51 4756 1 Response: AUTH TLS
2016-09-06 09:09:51 4756 1 Response: PBSZ
2016-09-06 09:09:51 4756 1 Response: PROT
2016-09-06 09:09:51 4756 1 Response: UTF8
2016-09-06 09:09:51 4756 1 Response: TVFS
2016-09-06 09:09:51 4756 1 Response: ESTA
2016-09-06 09:09:51 4756 1 Response: PASV
2016-09-06 09:09:51 4756 1 Response: EPSV
2016-09-06 09:09:51 4756 1 Response: SPSV
2016-09-06 09:09:51 4756 1 Response: ESTP
2016-09-06 09:09:51 4756 1 Response: 211 End.
2016-09-06 09:09:51 4756 1 Command: OPTS UTF8 ON
2016-09-06 09:09:51 4756 1 Response: 200 OK, UTF-8 enabled
2016-09-06 09:09:51 4756 1 Command: PBSZ 0
2016-09-06 09:09:51 4756 1 Response: 200 PBSZ=0
2016-09-06 09:09:51 4756 1 Command: PROT P
2016-09-06 09:09:52 4756 1 Response: 200 Data protection level set to "private"
2016-09-06 09:09:52 4756 1 Status: Logged in
2016-09-06 09:09:52 4756 1 Status: Retrieving directory listing...
2016-09-06 09:09:52 4756 1 Command: PWD
2016-09-06 09:09:52 4756 1 Response: 257 "/" is your current location
2016-09-06 09:09:52 4756 1 Command: TYPE I
2016-09-06 09:09:52 4756 1 Response: 200 TYPE is now 8-bit binary
2016-09-06 09:09:52 4756 1 Command: PASV
2016-09-06 09:09:52 4756 1 Response: 227 Entering Passive Mode (h1,h2,h3,h4,133,150)
2016-09-06 09:09:52 4756 1 Command: MLSD
2016-09-06 09:09:52 4756 1 Response: 150 Accepted data connection
2016-09-06 09:09:52 4756 1 Response: 226-Options: -a -l
2016-09-06 09:09:52 4756 1 Response: 226 6 matches total
在 Mike 的建议下,我打开了 TLS 调试。程序似乎再次通过 TLS 握手。输出很长,但在发出 list 命令后,我看到“*** ClientHello,TLSv1.2”以及看起来与启动 FTP 连接相同的命令。
差异似乎出现在最后:
%% Cached client session: [Session-2, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
main, received EOFException: ignored
main, called closeInternal(false)
main, SEND TLSv1.2 ALERT: warning, description = close_notify
main, WRITE: TLSv1.2 Alert, length = 26
main, called closeSocket(false)
main, called close()
main, called closeInternal(true)
main, called close()
main, called closeInternal(true)
main, received EOFException: ignored
main, called closeInternal(false)
main, SEND TLSv1.2 ALERT: warning, description = close_notify
main, WRITE: TLSv1.2 Alert, length = 26
main, called closeSocket(false)
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
最佳答案
虽然这看起来像是一篇旧帖子,但我今天遇到了类似的问题并且无法(最初)找出解决方案。我可以通过 FileZilla 连接,但不能通过 FTPSClient 连接,在运行 ftpClient.enterLocalPassiveMode()
后,我曾经得到 425 cannot open data connection
我的解决方案是在登录之前更改 ftpClient.enterLocalPassiveMode()
,但在连接到 FTPServer 之后它起作用了。通常我看到的所有代码示例都在发送/接收数据之前但在登录之后使用 enterlocalpassivemode
。有关对我有用的示例,请参见下面的代码。
FTPSClient ftpClient = new FTPSClient(false);
ftpClient.connect("remote.ftp.server", port);
ftpClient.enterLocalPassiveMode();// Run the passive mode command now instead of after loggin in.
ftpClient.login("username", "password");
ftpClient.execPBSZ(0);
ftpClient.execPROT("P");
ftpClient.type(FTP.BINARY_FILE_TYPE);
//ftpClient.enterLocalPassiveMode(); Previously it was here.
FTPFile[] files = ftpClient.listDirectories("/");
希望这对您有所帮助。另请注意,为使答案简短,所有其他代码和良好做法均已省略。
关于Java FTPS 无法检索文件列表(FileZilla 客户端工作正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337254/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
如何在不手动设置站点管理器的情况下解决 filezilla 中的过多连接问题? 响应:421 来自此 IP 的连接过多 (8)错误:无法连接到服务器 最佳答案 我可以通过将站点管理器中常规选项卡下的加
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我尝试使用 Filezilla 连接到新创建的域时,出现以下错误: Connection attempt failed with "EAI_NODATA - No address associate
这似乎是一个重复的问题,但事实并非如此。我试图解决类似的问题,但找不到解决问题的方法。这是我的问题: 我需要在公司服务器上建立一个 ftp 连接。我可以轻松地从我 PC 上的 fileZilla 连接
我尝试连接到我的托管服务器,但收到如下错误消息:- Status: Connection established, waiting for welcome message... Response:
我为大家提供FileZilla下载链接: FileZilla Server服务端绿色汉化版:FileZilla_Server-0_9_59.exe; 在服务器上安装并配置服务端: 安装过程这里
FileZillaServer小巧的FTP服务器软件, 若您想玩玩不复杂的FTP服务器, 那你可以能够试试这个耗用系统system资源相当小的软件, 让你轻松又容易架设一FTP服务器,新增组配置,
在 电脑系统 中使用Filezilla Server配置FTP服务器时,在访问登录后弹出提示“详细错误:操作超时”。如果有用户在电脑中遇到这样的问题,那么,不妨参考接下来
我正在尝试使用 filezilla 将文件上传到服务器,我的大部分文件都已上传,但有些文件传输失败..但我没有看到哪些文件传输失败。 重新上传所有文件需要几个小时.. 任何人请帮助我解决这个问题,我怎
当我尝试从 Mac 上传文件时,我在“本地站点”文件列表中收到此消息: 您无权列出此目录 最佳答案 您需要授予 FileZilla 访问磁盘上文件的权限。 在 Mac 上,转到 系统偏好 |安全与隐私
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
I have a website template我使用 FileZilla 上传到我的 ftp 服务器。但是,当我访问该域时,我收到错误: Directory Listing Denied This
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
FileZilla是经典的开源FTP解决方案,包括FileZilla客户端和FileZilla Server。其中,FileZilla Server的功能比起商业软件FTP Serv-U毫不逊色。F
我想知道如何使用 FileZilla 批量删除文件。 我的一个网站被黑了,我知道他们在我几乎所有的 WordPress 文件夹中都引入了一个 info.html 文件。 所以我的问题是,是否有办法从我
这是我的第一篇文章,所以请温柔。 我发现我经常不断地保存文件,然后将它们上传到网络服务器进行测试。这变得相当烦人,所以我试图创建一个自动热键脚本,当我在 Notepad++ 中保存文件时,该脚本会使用
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 社区在 8 个月前审查了
我是一名优秀的程序员,十分优秀!