【问题标题】:Flutter HttpServer cannot access from other computers on the LAN networkFlutter HttpServer 无法从局域网内其他电脑访问
【发布时间】:2021-01-30 07:33:06
【问题描述】:

我想实现通过 http 服务器向 Flutter android 应用发送数据的功能。例如,当我在 Windows 上运行的 node.js 应用程序任务结束时,我想在应用程序上进行振动。

这里是来自Write HTTP clients & servers | Dart 的示例,它适用于android 上的localhost:8080。但不适用于 LAN 网络,例如从这台 Windows 机器认为 android LAN IP 地址“http://192.168.0.193:8080/”。我做了谷歌并搜索堆栈溢出,发现运行Flutter时我需要--web-port 8080 --web-hostname 0.0.0.0,但这仍然不起作用,这表明我192.168.0.193 refused to connect. android IP是通过settings > wifi > wifi preference > advanced > IP addresses确认的,我确定IP本身是正确的。

所以,我不知道为什么我无法通过本地 IP 地址连接到应用程序。非常感谢您的帮助,谢谢。

import 'dart:io';

Future main() async {

  var server = await HttpServer.bind(
    InternetAddress.loopbackIPv4,
    8080,
  );

  print('Listening on ${server.address.toString()}:${server.port} ');


  await for (HttpRequest request in server) {
    request.response.write('Hello, world!');  
    await request.response.close();
  }

}
flutter run -d F5122 --web-port 8080 --web-hostname 0.0.0.0

【问题讨论】:

    标签: android flutter dart


    【解决方案1】:

    使用 InternetAddress.anyIPv4 代替 InternetAddress.loopbackIPv4 为我解决了问题。

    【讨论】:

      【解决方案2】:

      我的解决方案是这样的:

        var server = await HttpServer.bind(
          InternetAddress("192.168.1.X"),
          8080,
        );
      

      将值 X 替换为您的服务器计算机的编号

      这样您就可以从另一台计算机访问。

      【讨论】:

        猜你喜欢
        • 2018-10-29
        • 1970-01-01
        • 2021-09-11
        • 2020-02-08
        • 2013-12-26
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 2013-05-04
        相关资源
        最近更新 更多