【问题标题】:Flutter - SocketException: Connection failed (OS Error: Network is unreachable, errno = 101)Flutter - SocketException:连接失败(操作系统错误:网络无法访问,errno = 101)
【发布时间】:2019-08-19 08:57:05
【问题描述】:

连接以太坊节点时出错

E/flutter (23790): [错误:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:SocketException:连接失败(操作系统错误: 网络不可达,errno = 101)

---------------------------------- web3连接代码如下-------- ---------------------------------------

import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:web3dart/web3dart.dart';
import 'dart:async';

const String rpcUrls = 'https://node1.bitcoiin.com';
class HomeScreen extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _HomeScreenState();
  }
}
class _HomeScreenState extends State<HomeScreen> {
  @override
  void initState() {
    main();
    super.initState();
  }
  main(){
  var ethClient = new Web3Client(apiUrls, new Client());
  print(ethClient.getBlockNumber());
}

【问题讨论】:

  • 您是否在模拟器上运行您的应用程序?
  • 是的,我正在使用模拟器
  • 由于某种原因,您的模拟器无法查找服务器的IP(这是网络问题而不是颤振问题),请尝试从浏览器打开相同的URL以确保。
  • 我在本地系统上运行以太坊节点,我在 nodejs 应用程序中使用了那个 RPC URL (localhost:8545),它工作正常
  • 对不起,我没听明白,你的意思是这个 URL 在你的本地机器或模拟器上工作正常吗?

标签: dart flutter web3


【解决方案1】:

我仍然不明白为什么这个解决方案有效,但我遇到了同样的问题,我尝试用我的服务器的 IP 地址替换localhost(例如192.168.1.33)。成功了!。

为您的应用尝试以下代码:

main(){
  var httpClient = new Client();
  // You tried the code below and it didn't work
  // var ethClient = new Web3Client('http://localhost:8545', httpClient);

  // Try this code instead. (Replace "192.168.1.33" with the IP of your server)
  var ethClient = new Web3Client('http://192.168.1.33:8545', httpClient);

  print(ethClient.getBlockNumber());
}

【讨论】:

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