- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用在 Android 模拟器中运行的 Java FTPSClient
从本地 FileZilla 服务器下载文件。
我编写了这个帮助程序代码来下载一个文件:
public boolean downloadSingleFile(FTPSClient ftpClient,
String remoteFilePath, File downloadFile) {
OutputStream outputStream;
Log.i("t1", remoteFilePath + " - " + downloadFile.getAbsolutePath());
try {
outputStream = new BufferedOutputStream(new FileOutputStream(
downloadFile));
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
boolean retval = ftpClient.retrieveFile(remoteFilePath, outputStream);
outputStream.flush();
return retval;
} catch (Exception e) {
Log.e("dwFile", e.toString());
Log.e("dwFile", ftpClient.getReplyString());
} return false;
}
我这样称呼这个函数:
FTPSClient dwClient = new FTPSClient();
dwClient.addProtocolCommandListener(
new PrintCommandListener(
new PrintWriter(new OutputStreamWriter(System.out, "UTF-8")), true));
dwClient.setConnectTimeout(30 * 1000);
dwClient.connect(OmsSettingsFunctions.getFTPServer());
Log.i("dwDB", dwClient.getReplyString());
if (dwClient.login(FPTuser, FTPpass)) {
Log.i("dwDB", dwClient.getReplyString());
dwClient.enterLocalPassiveMode();
File dwFile = new File(externalPath + "/Android/data/com.myapp/files/Documents/db.temp");
if(!downloadSingleFile(dwClient, "/DBs/db.txt", dwFile)) {
Log.e("dwDB", "Download could not finish (DB)");
Log.e("dwDB", dwClient.getReplyString());
}...
但我不断收到此错误:
I/System.out: 220-FileZilla Server version 0.9.41 beta
I/System.out: 220-written by Tim Kosse (Tim.Kosse@gmx.de)
220 Please visit http://sourceforge.net/projects/filezilla/
I/System.out: AUTH TLS
D/EGL_emulation: eglMakeCurrent: 0xa209dd60: ver 3 0 (tinfo 0x9f652ff0)
D/EGL_emulation: eglMakeCurrent: 0xa209dd60: ver 3 0 (tinfo 0x9f652ff0)
I/System.out: 234 Using authentication type TLS
I/dwDB: 234 Using authentication type TLS
I/Permission: Readingpermission is granted
I/Permission: Writingpermission is granted
I/System.out: USER *******
I/System.out: 331 Password required for omstest
I/System.out: PASS *******
I/System.out: 230 Logged on
I/dwDB: 230 Logged on
I/t1: /DBs/db.txt - /storage/0FF0-280B/Android/data/com.myapp/files/Documents/db.temp
I/System.out: TYPE I
I/System.out: 200 Type set to I
I/System.out: PASV
I/System.out: 227 Entering Passive Mode (127,0,0,1,199,113)
E/dwFile: java.net.ConnectException: Connection refused
227 Entering Passive Mode (127,0,0,1,199,113)
E/dwDB: Download could not finish (DB)
227 Entering Passive Mode (127,0,0,1,199,113)
我已经尝试使用 enterLocalActivemode()
而不是 enterLocalPassivmode()
但没有帮助。 FTP 服务器强制执行 TLS,并在我的本地计算机上运行。我通过 10.0.2.2(Android 环回)连接到它。我该如何解决这个问题?
最佳答案
虽然我不熟悉 Android Emulator,但我假设您需要连接到 10.0.2.2 才能连接到模拟器主机。
在 FTP 被动模式下,服务器发回 FTP 客户端需要连接以传输文件(或目录列表)的 IP 地址。当您的 FTP 服务器监听 127.0.0.1 时,它会发回该 IP 地址。但在 Android 代码的上下文中,127.0.0.1 指的是(模拟的)Android 主机。因此“连接被拒绝”。
这与连接到 NAT 后面的 FTP 服务器的常见问题非常相似。请参阅FTP server running on Port 2000 over NAT not working on Passive Mode
因此解决方案是相同的:
显然,这反过来会使 FTP 服务器无法供普通客户端使用。
正如您所评论的那样,只有当从 Android 模拟器连接到模拟器主机上运行的 FTP 服务器时,才会出现此问题。
<小时/>另一个解决方案是使用FTPClient.setPassiveNatWorkaroundStrategy
。它接受 HostnameResolver 接口(interface)的实现。如果您以将 127.0.0.1 转换为 10.0.2.2 的方式实现,即使服务器上没有任何更改,它也将允许您的 Java 代码进行连接。
public static class ServerResolverImpl implements HostnameResolver {
private FTPClient client;
public ServerResolverImpl(FTPClient client) {
this.client = client;
}
@Override
public String resolve(String hostname) throws UnknownHostException {
// Ignore "hostname" returned by the server.
// Instead always use the primary address of the FTP server.
return this.client.getRemoteAddress().getHostAddress();
}
}
关于java - Android模拟器中从本地FTP服务器下载时出现错误 "227 Entering Passive Mode"/"Connection refused",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59993784/
我有以下 CDI 托管 bean: @Named @SessionScoped public class InfoPageController implements Serializable {
我正在使用 dragula js 在移动设备中使用拖放功能,突然遇到了一个问题,出现以下错误。 [Intervention] Unable to preventDefault inside passi
我正在使用 Google Page Speed Insights优化我的页面速度。它告诉我不要使用被动监听器来提高滚动性能。我知道如何使用 Vanilla javascript 来做到这一点。 win
我们使用独立的集群 JMS 服务器托管集群应用程序服务器。应用程序服务器是主动/主动且负载平衡的,而JMS服务器是主动/被动(共享存储)并使用操作系统集群。这意味着从客户端的角度来看,每个端点只有一个
我正在使用锤子进行拖动,加载其他东西时它变得不稳定,正如这条警告消息告诉我的那样。 Handling of 'touchstart' input event was delayed for X ms
我正在使用锤子进行拖动,并且在加载其他内容时它变得不稳定,正如此警告消息所告诉我的那样。 Handling of 'touchstart' input event was delayed for X
因为有两个关于被动和主动 FTP 模式的问题 Passive FTP instead of Active FTP What is the difference between active and p
我发现自己经常创建一个没有公共(public)方法且自包含的对象。它通常处理在其私有(private)方法中传递给其构造函数的参数事件,并且不会引发任何事件或公开任何公共(public)方法。 我称这
引用此 post我已经成功地获得了一个 Linux 设备(Raspberry Pi Model A+)来将我的蓝牙 4.0 USB 加密狗切换到“广告”状态: sudo hciconfig hci0
我们制定了每晚将文件上传到合作伙伴 FTP 站点的流程。他们现在需要被动连接,我们的上传现在失败了。 .NET 4 FtpWebRequest 是否可以实现被动连接而不是主动连接?如果是这样,有人可以
我使用 Chrome 扩展来修改缩放增量,它在控制台中抛出此错误: Added non-passive event listener to a scroll-blocking 'mousewheel'
随着 Chrome 的最新更新[73],他们改变了被动事件监听器与鼠标滚轮在窗口对象上的工作方式。基本上,这已经破坏了许多平滑滚动插件,这些插件在 Chrome 中滚动时消除了传统鼠标滚轮的默认“抖动
我正在 Ubuntu 中使用套接字编程 C++ 编写服务器客户端程序。 这是连接客户端和服务器的代码。 void setParent(string name,int parentPort){
我正在使用 Owin WsFederation 身份验证。对于未经授权的用户,我希望一条路径重定向到 STS,另一条路径返回 401 响应。是否可以为不同的路径设置不同的AuthenticationM
似乎 Microsoft ADFSv2 支持 WS-Trust 和 SAML Passive,但它所构建的 WIF 堆栈不支持 SAML。 WS-Trust 和 SAML-P 有什么区别?它们是否具有
“Presenter First”MVP 模式与“Passive View”一样吗?如果不是,它们有什么不同? 最佳答案 也许我错了,但据我所知: 演示者优先方法中使用的 mvp 模式是围绕 Mart
我正在尝试使用在 Android 模拟器中运行的 Java FTPSClient 从本地 FileZilla 服务器下载文件。 我编写了这个帮助程序代码来下载一个文件: public boolean
我正在尝试使用在 Android 模拟器中运行的 Java FTPSClient 从本地 FileZilla 服务器下载文件。 我写了这个帮助代码来下载一个文件: public boolean dow
我无法解决我在客户站点遇到的这个问题。客户端有两个站点,并且都运行相同版本的我的应用程序。在一个站点上没有问题,但在另一个站点上,当我尝试从 FTP 站点下载文件时,我开始不断收到以下错误: "227
例如,模板中有一个元素使用局部变量#targetElement,目的是在需要时获取其当前宽度。但我不想以编程方式计算样式。尝试使用带有 @ViewChild 注释的 setter get: 从模板中获
我是一名优秀的程序员,十分优秀!