栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从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();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428621.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号