HarmonyOS鸿蒙Next中在模拟器上的应用对服务器接口发起请求被拒,防火墙关闭了也没有用。

HarmonyOS鸿蒙Next中在模拟器上的应用对服务器接口发起请求被拒,防火墙关闭了也没有用。 在鸿蒙模拟器上的应用对服务器接口发起请求被拒([epoll_multi_driver.cpp:75] epoll wait event 0 err: 111),防火墙关闭了也没有用。


更多关于HarmonyOS鸿蒙Next中在模拟器上的应用对服务器接口发起请求被拒,防火墙关闭了也没有用。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

模拟器默认作为独立虚拟设备运行,若服务器绑定到 localhost或 127.0.0.1,模拟器无法直接访问宿主机服务。

更多关于HarmonyOS鸿蒙Next中在模拟器上的应用对服务器接口发起请求被拒,防火墙关闭了也没有用。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next模拟器中,应用请求被服务器拒绝,即使关闭防火墙也无效,通常是由于以下原因:

  1. 模拟器网络配置问题:鸿蒙Next模拟器可能使用独立的虚拟网络接口,需检查模拟器的网络设置,确保其能正确访问外部网络。

  2. 服务器端限制:服务器可能设置了IP白名单或安全策略,拒绝来自模拟器IP地址的请求。需确认服务器配置是否允许模拟器所在网段的访问。

  3. 应用权限配置:在应用的module.json5配置文件中,检查是否已声明必要的网络权限,如ohos.permission.INTERNET

  4. HTTPS证书问题:若请求使用HTTPS,模拟器可能缺少服务器所需的根证书,导致SSL/TLS握手失败。

建议检查上述配置,确保模拟器网络通畅、服务器策略允许、应用权限正确。

根据错误信息和截图分析,问题核心在于鸿蒙模拟器(或应用)无法与您指定的服务器IP(10.10.10.10)建立网络连接,返回了“Connection refused”(连接被拒绝)的错误。错误码111通常对应ECONNREFUSED。

关闭Windows防火墙无效,说明问题不在宿主机的出站拦截上。根本原因和排查方向如下:

1. 服务器端未监听或不可达 这是最可能的原因。10.10.10.10 是一个典型的局域网私有IP。

  • 服务未运行:请确认目标服务器(10.10.10.10)上您的服务进程(如Spring Boot、Nginx、Node.js等)是否已成功启动,并正在监听您应用所请求的端口(例如 8080)。
  • 监听地址配置:检查服务器应用配置,确保其监听地址为 0.0.0.0(所有网络接口)或 10.10.10.10,而不仅仅是 127.0.0.1(localhost)。如果只监听 127.0.0.1,则只有本机可以访问,模拟器无法访问。
  • 服务器防火墙:检查服务器本身的防火墙(如Linux的iptables/firewalld,Windows防火墙)是否放行了该端口的入站请求。需要在服务器上操作。

2. 鸿蒙模拟器的网络模式 鸿蒙模拟器默认运行在一个独立的虚拟网络中(通常采用NAT模式)。在这个模式下:

  • 访问宿主机(开发电脑):模拟器可以使用特殊的宿主IP(如 10.0.2.2 在Android模拟器中,鸿蒙可能类似)来访问宿主机上运行的服务。直接使用宿主机的局域网IP(如 10.10.10.10)可能无法连通
  • 访问局域网其他机器:在NAT模式下,模拟器访问局域网内其他设备(非宿主机)可能会受限。

解决方案建议:

  1. 优先测试本地服务

    • 将您的后端服务运行在**宿主机(您的开发电脑)**上。
    • 在鸿蒙应用的网络请求代码中,将服务器地址从 10.10.10.10 改为模拟器访问宿主机的专用地址。请查阅HarmonyOS模拟器官方文档,确认其特定的宿主机访问IP(常见的有 10.0.2.2)。例如,将请求URL改为 http://10.0.2.2:8080/your-api
  2. 检查并配置服务器

    • 如果必须连接 10.10.10.10 这台独立服务器,请登录该服务器进行验证:
      • 运行 netstat -an | grep :8080 (Linux) 或 netstat -ano | findstr :8080 (Windows) 命令,确认端口正在被监听,且监听地址不是 127.0.0.1
      • 暂时关闭服务器防火墙进行测试:systemctl stop firewalld (CentOS) 或相应命令。
    • 在宿主机上使用命令行工具(如 curl http://10.10.10.10:8080telnet 10.10.10.10 8080)测试能否从宿主机访问该服务。如果宿主机都无法访问,则问题肯定在服务器。
  3. 修改模拟器网络设置

    • 尝试将HarmonyOS模拟器的网络模式从默认的NAT模式更改为桥接模式。桥接模式下,模拟器会像一台真实设备一样从您的局域网获取一个IP地址,从而可以直接与 10.10.10.10 通信。请在模拟器的设置或管理界面中查找网络适配器配置选项。

总结步骤: 首先,在宿主机上验证服务器 10.10.10.10:8080 本身是否可访问。 其次,将应用改为访问宿主机服务(使用模拟器专用宿主IP)进行快速验证。 最后,若必须访问局域网IP,考虑将模拟器设置为桥接网络模式。

回到顶部