将 Flutter 连接到真实设备中的 localhost 服务器

Posted

技术标签:

【中文标题】将 Flutter 连接到真实设备中的 localhost 服务器【英文标题】:Connect Flutter to localhost server in real device 【发布时间】:2021-02-03 01:17:33 【问题描述】:

我一直在寻找关于配置 Flutter 以连接到真实设备中的 localhost,但我没有找到任何东西。

当我尝试连接到本地主机中的服务器时,总是得到“连接超时”。

我已经用 10.0.0.2 的模拟器尝试了该应用程序,并且它工作了,但现在我想尝试在我的设备中进行连接,这似乎是不可能的!

这是我得到的错误:

SocketException:操作系统错误:连接超时,errno = 110,地址 = 192.168.0.125,端口 = 41814

请!应该不会这么难吧……

我正在使用 Spring Boot 服务器和 Flutter。我的设备是一加 6T。

当我使用邮递员时,它反应良好,我知道这里发生了什么。

【问题讨论】:

您的设置不清楚,我们需要知道。告诉你的 Flutter 应用在​​哪台设备上运行。然后告诉你的服务器在哪个设备上运行。 我的设备是装有 android 10 的 OnePlus 6T,服务器在我的 PC 上运行 spring boot。 那么客户端应该使用服务器计算机的本地 ip,看起来好像你正在使用它。尝试您的 Android 设备上的浏览器是否可以使用该 IP 进行连接。还可以尝试在您的 PC 上使用浏览器。您是否将服务器绑定到本地 ip,使其不接受其他连接?关闭你电脑的防火墙进行测试。 正如我在一些示例中看到的,我尝试在 0.0.0.0:3333 中启动服务器,并且它在邮递员中继续正常工作。我还尝试在浏览器中访问该 ip,在设备中显示“连接超时”,在电脑中显示“连接被拒绝”。 防火墙....... 【参考方案1】:

如果您的意思是现在您正在使用本地服务器(例如 xampp)并想在真实设备上进行测试 试试这个 https://ngrok.com/

【讨论】:

【参考方案2】:

仅当您在 Router 中启用了WiFi 隔离 时才能使用此解决方案。否则,如果您将本地 IP 地址 API 托管 url & 设置为颤振,它将起作用!

第 1 步

我遇到了同样的问题,我就这样解决了。默认情况下(很可能)您的路由器启用了 WiFi 隔离。这是一项安全功能。首先,您需要关闭此设置并保存设置。关闭路由器电源 >= 1 分钟,然后将其打开。

第 2 步

然后您需要向防火墙添加两个新规则。允许规则作为带有主机端口(例如 8000)的 Port-TCP-inbound 和 Port-TCP-outbound 规则。 IP 应保持“任何”并允许公共/私有/域。在您的服务器 API 中,将您的应用程序配置为使用上述配置的端口号 (8000) 在本地 IP 中运行。应该是这样的。

第 3 步

在您的 Flutter 应用程序中,将您的 URL 设置为您的本地 PC IP 和端口。

然后运行您的 API 和颤振应用程序。您的本地 IP 端口配置适用于模拟器、android 设备和网络。我没有要测试的 ios 设备。它也应该在那里工作。

【讨论】:

以上是关于将 Flutter 连接到真实设备中的 localhost 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 如何检查我的设备是不是通过蓝牙连接到另一台设备

我无法连接到真实设备的 ionic 3G 应用程序

iOS - 连接到真实设备上的数据库时出错

调试器无法连接到 Monodevelop(模拟器和真实设备)

如何将 Android 手机连接到 Visual Studio Code?

Xamarin.Forms 可以通过 Wi-FI 在 iPhone(真实设备)上工作,而无需连接到来自 VS 2019 CE Windows 10 的真实 Mac Os?