首页 > 解决方案 > Flutter HttpServer 无法从局域网内其他电脑访问

问题描述

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

这里的例子来自写 HTTP 客户端和服务器 | Dart,这适用于 localhost:8080 在 android 上。但不适用于 LAN 网络,例如从这台 Windows 机器认为 android LAN IP 地址“http://192.168.0.193:8080/”。我做了谷歌并搜索了堆栈溢出,发现--web-port 8080 --web-hostname 0.0.0.0运行Flutter时需要,但这仍然不起作用,这表明我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

标签: androidflutterdart

解决方案


使用 InternetAddress.anyIPv4 而不是 InternetAddress.loopbackIPv4 为我解决了问题。


推荐阅读