从Android模拟器中的本地FTP服务器下载时出现错误“ 227进入被动模式” “连接被拒绝”

从Android模拟器中的本地FTP服务器下载时出现错误“ 227进入被动模式” “连接被拒绝”,第1张

从Android模拟器中的本地FTP服务器下载时出现错误“ 227进入被动模式” /“连接被拒绝”

虽然我对Android Emulator不熟悉,但是我假设您需要连接到10.0.2.2才能连接到模拟器主机。

在FTP被动模式下,服务器发回FTP客户端需要连接到的IP地址以传输文件(或目录列表)。当您的FTP服务器侦听127.0.0.1时,它会发回该IP地址。但是在您的Android代码的上下文中,127.0.0.1是指(模拟的)Android主机。因此,“连接被拒绝”。

因此解决方案是相同的:

  • 在FileZilla服务器界面中,转到 编辑 >设置>被动模式设置>特定于IPv4>被动模式传输的外部服务器IP地址。并输入10.0.2.2。
  • 也许您还需要取消选中 “不要将外部IP用于本地连接”

显然,这又使FTP服务器无法用于普通客户端。

您已正确评论,仅当从Android模拟器连接到在模拟器主机上运行的FTP服务器时,才会出现此问题。


另一个解决方案是使用

FTPClient.setPassiveNatWorkaroundStrategy
。它接受
HostnameResolver
接口的实现。如果以某种方式将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 {        return this.client.getRemoteAddress().getHostAddress();    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5094132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存