【问题标题】:I/flutter (30720): SocketException: OS Error: Connection timed out, errno = 110, address = 192.19.170.13, port = 47763I/flutter (30720): SocketException: OS Error: Connection timed out, errno = 110, address = 192.19.170.13, port = 47763
【发布时间】:2020-05-26 02:11:40
【问题描述】:

我使用的是真实设备(不是安卓模拟器) 后端:MongoDb Atlas, API:strapi-beta,出现此错误: I/flutter (30720): SocketException: OS Error: Connection timed out, errno = 110, address = 192.19.170.13, port = 47763 (发现了很多类似的问题,但都没有使用真机进行测试)

    try {
      var ip = '192.19.170.13';
      setState(() => _isSubmitting = true);
      http.Response response =
          await http.post('http://$ip:1337/auth/local/register',
 /* I've also tried using localhost(it didn't work) everyone suggested to use my loopback adapter's (Ethernet's ip address) even that isn't working.*/
 body: {
        'username': _username,
        'email': _email,
        'password': _password,
      });

      final responseData = json.decode(response.body);
      setState(() => _isSubmitting = false);
      _successSnackBar();
      print(responseData);
    } catch (e) {
      setState(() => _isSubmitting = false);
      print(e.toString());
    }
  }

【问题讨论】:

  • 这是网络问题
  • 你能告诉我怎么解决吗? @SteveNosse
  • 先检查设备是否可以上网
  • 当然它有互联网连接!
  • 你解决了吗?我也被困在这个问题上

标签: mongodb api http flutter socketexception


【解决方案1】:

如果您使用的是 Chrome,则需要转到

chrome://inspect/#devices

并像这样将您的端口添加到“端口转发”

并确保您的设备上有 USB 调试功能。

【讨论】:

  • 仅在真实设备上出现错误,应用在模拟器上运行良好。
  • 是的,在真机测试时使用端口转发,就不会出现这个错误了。
【解决方案2】:

好吧,如果您使用本地服务器进行测试并且您在 Windows 上。该错误可能是由于Windows防火墙造成的。您可以禁用防火墙,它应该可以工作,或者向防火墙添加规则以允许 tcp 访问提到的端口。

【讨论】:

    【解决方案3】:

    检查您的设备网络连接(模拟器或真实设备)和机器网络连接(计算机)是否相同。

    • 移动数据关闭
    • 在您的机器上使用的用户 wifi 数据。

    问题解决了。

    【讨论】:

      【解决方案4】:

      我的 Android 设备也有同样的问题。即 IP 地址链接在 Localhost 中可以正常工作,但在物理设备上无法正常工作。

      所以我发现要在物理设备(Android 设备)上使用您的 IP 地址链接,您必须在 WAN 网络上托管您的网站(主要是 WebAPI)才能访问您的 IP 地址链接。

      所以答案是在 WAN 网络上托管您的网站(主要是 WebAPI)。

      【讨论】:

      • 我遇到了同样的问题,但我的应用程序在模拟器上运行,而不是在真实设备上,所以你的解决方案可以解决这个问题,或者还有其他解决方案可以在真实设备上运行。跨度>
      【解决方案5】:

      我在模拟器上遇到了同样的问题,问题的原因是 IP。

      您能否在不使用颤振应用程序的情况下检查您是否已连接到设备中的该 IP?

      我的问题是尝试使用 127.0.0.1 连接到主机 localhost,并找到此页面: https://developer.android.com/studio/run/emulator-networking

      【讨论】:

      • 我已经说过我没有使用模拟器,上面的链接没有帮助!
      • 但是您是否尝试过在没有应用程序的情况下检查您是否连接到 192.19.170.13?另一部分是解释为什么我会遇到问题,我正在寻找的服务不在我调用的 IP 上。这只是为了上下文。
      【解决方案6】:

      方法一:

      1. 安装 apache2
      2. 安装 curl
      3. 访问 www 并使用 www.IP 地址固定

      方法二:

      1. 将您的路由器 NAT 设置配置为您的本地 IP 地址。
        现在您可以使用您的互联网 IP 地址了。

      【讨论】:

        猜你喜欢
        • 2020-09-07
        • 2020-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        • 2022-10-22
        • 2020-07-19
        相关资源
        最近更新 更多