最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter?Ping檢查服務(wù)器通訊信號強度實現(xiàn)步驟

 更新時間:2023年06月27日 09:53:38   作者:會煮咖啡的貓  
這篇文章主要為大家介紹了Flutter?Ping檢查服務(wù)器通訊信號強度實現(xiàn)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

對通訊敏感的程序中,我們除了檢查當(dāng)前網(wǎng)絡(luò)通道外,還要檢查與服務(wù)器實際的型號強度。

一般我們采用 ping 的方式返回型號的強度和穩(wěn)定程度。

dart_ping 包

https://pub-web.flutter-io.cn/packages/dart_ping

ios dart_ping 包

https://pub-web.flutter-io.cn/packages/dart_ping_ios

ios 需要單獨去設(shè)置

Ping 知識點

Ping 是一種常用的網(wǎng)絡(luò)工具,用于測試網(wǎng)絡(luò)設(shè)備之間的連通性和延遲。Ping 工具通過向目標(biāo)設(shè)備發(fā)送一個 ICMP Echo Request 數(shù)據(jù)包,然后等待目標(biāo)設(shè)備返回一個 ICMP Echo Reply 數(shù)據(jù)包,來檢測目標(biāo)設(shè)備的可達(dá)性和延遲。以下是關(guān)于 Ping 工具的一些重要信息:

作用:

  • 測試網(wǎng)絡(luò)設(shè)備之間的連通性和延遲
  • 發(fā)現(xiàn)網(wǎng)絡(luò)故障和嗅探網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
  • 驗證網(wǎng)絡(luò)性能和帶寬

性能指標(biāo):

  • 延遲(Latency):指的是從發(fā)送一個數(shù)據(jù)包到接收到相應(yīng)數(shù)據(jù)包所需的時間。
  • 丟包率(Packet Loss Rate):指的是在發(fā)送和接收數(shù)據(jù)包之間丟失的數(shù)據(jù)包的比例。
  • 帶寬(Bandwidth):指的是網(wǎng)絡(luò)中可用的數(shù)據(jù)傳輸速率,通常以比特/秒(bps)為單位。

如何判斷:

  • 延遲:通常使用 Ping 工具的平均延遲來判斷網(wǎng)絡(luò)連接的延遲狀況,如果延遲較高,可能會影響網(wǎng)絡(luò)應(yīng)用程序的性能。
  • 丟包率:如果 Ping 工具返回的丟包率較高,可能意味著網(wǎng)絡(luò)連接不穩(wěn)定,可能會影響網(wǎng)絡(luò)應(yīng)用程序的可靠性。
  • 帶寬:如果 Ping 工具返回的延遲比較高,可能意味著網(wǎng)絡(luò)瓶頸,可能會影響網(wǎng)絡(luò)應(yīng)用程序的帶寬和性能。

步驟

第一步:導(dǎo)包,加入圖片素材

pubspec.yaml

dart_ping 包

dependencies:
  flutter:
    sdk: flutter
    ...
  dart_ping: ^8.0.1

圖片

assets:
    - assets/images/

第二步:ping 業(yè)務(wù)實現(xiàn)

lib/ping.dart

成員變量

// 檢測域名
  final String _domain = 'baidu.com';
  // 信號量
  int _signalStrength = 0;
  // 返回信息
  String _resString = '';

ping 操作執(zhí)行

// 執(zhí)行 ping
  void _doPing() {
    _resString = 'ping $_domain \n\n';
    final ping = Ping(_domain, count: 20);
    ping.stream.listen((event) {
      print(event);
      if (event.error != null) {
        // 錯誤
        setState(() {
          _resString = event.error.toString();
        });
      } else {
        if (event.response != null) {
          // 單次信息
          setState(() {
            _resString += '${event.response}\n';
          });
          // 信號強度
          _signalStrength = calculateSignalStrength(
              event.response?.time?.inMilliseconds ?? 0);
        }
        // 總計
        if (event.summary != null) {
          setState(() {
            _resString += '\n${event.summary}\n';
          });
        }
      }
    });
  }

信號強度

// 信號強度 0 ~ 5 , 5 最好,0 最差
  int calculateSignalStrength(int pingDelay) {
    if (pingDelay < 0) {
      // 無網(wǎng)絡(luò)連接
      return 0;
    } else if (pingDelay < 100) {
      // 延遲 < 100ms,信號強度為 5
      return 5;
    } else if (pingDelay < 200) {
      // 延遲 < 200ms,信號強度為 4
      return 4;
    } else if (pingDelay < 300) {
      // 延遲 < 300ms,信號強度為 3
      return 3;
    } else if (pingDelay < 500) {
      // 延遲 < 500ms,信號強度為 2
      return 2;
    } else {
      // 延遲 >= 500ms,信號強度為 1
      return 1;
    }
  }

視圖

Widget _mainView() {
    return Center(
      child: Column(
        children: [
          ElevatedButton(
            onPressed: _doPing,
            child: const Text('Start Ping'),
          ),
          Text('信號強度: $_signalStrength'),
          Text(_resString),
        ],
      ),
    );
  }
@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Ping'),
      ),
      body: _mainView(),
    );
  }

第三步:用圖片顯示信號強度

信號圖片

// 信號強度圖片
  Widget _buildSignalIcon(BuildContext context) {
    String iconAsset = 'assets/images/signal-$_signalStrength.png';
    return Image.asset(
      iconAsset,
      width: 28,
      height: 28,
      fit: BoxFit.fill,
    );
  }
Widget _mainView() {
    return Center(
      child: Column(
        children: [
          ...
          _buildSignalIcon(context),
          ...
        ],
      ),
    );
  }

代碼

小結(jié)

總之,Ping 工具是一種簡單而有效的網(wǎng)絡(luò)工具,可以幫助用戶測試網(wǎng)絡(luò)連通性和性能,及時發(fā)現(xiàn)和解決網(wǎng)絡(luò)問題。請在網(wǎng)路應(yīng)用 Flutter 中開啟這個功能~

以上就是Flutter Ping 檢查服務(wù)器通訊信號強度的詳細(xì)內(nèi)容,更多關(guān)于Flutter Ping服務(wù)器通訊信號的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android實現(xiàn)橡皮筋回彈和平移縮放效果

    Android實現(xiàn)橡皮筋回彈和平移縮放效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)橡皮筋回彈和平移縮放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android 的觸摸事件詳解及示例代碼

    Android 的觸摸事件詳解及示例代碼

    本文主要介紹Android 的觸摸事件,這里整理了詳細(xì)的資料,并附代碼示例,希望能幫助到有需要的小伙伴
    2016-09-09
  • Flutter生命周期超詳細(xì)講解

    Flutter生命周期超詳細(xì)講解

    和其他的視圖框架比如android的Activity一樣,flutter中的視圖Widget也存在生命周期,生命周期的回調(diào)函數(shù)提現(xiàn)在了State上面。理解flutter的生命周期,對我們寫出一個合理的控件至關(guān)重要
    2023-04-04
  • Android中定時執(zhí)行任務(wù)的3種實現(xiàn)方法(推薦)

    Android中定時執(zhí)行任務(wù)的3種實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄狝ndroid中定時執(zhí)行任務(wù)的3種實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • android Activity線性布局和表格布局實例講解

    android Activity線性布局和表格布局實例講解

    在activity的布局中,線性布局和表格布局是最簡單的,這次分別從線性布局,表格布局以及線性布局和表格混合布局做了實驗
    2013-11-11
  • RecyclerView實現(xiàn)側(cè)滑拖拽功能

    RecyclerView實現(xiàn)側(cè)滑拖拽功能

    這篇文章主要為大家詳細(xì)介紹了RecyclerView實現(xiàn)側(cè)滑拖拽功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android小米推送簡單使用方法

    Android小米推送簡單使用方法

    這篇文章主要為大家詳細(xì)介紹了Android小米推送簡單使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android Flutter實現(xiàn)3D動畫效果示例詳解

    Android Flutter實現(xiàn)3D動畫效果示例詳解

    在Flutter中提供了AnimatedWidget組件用于構(gòu)建可復(fù)用的動畫組件。本文我們用AnimatedWidget來實現(xiàn)組件的3D旋轉(zhuǎn)效果,感興趣的可以了解一下
    2022-03-03
  • Flutter 創(chuàng)建私有公共插件的步驟

    Flutter 創(chuàng)建私有公共插件的步驟

    flutter pub中有很多開源庫,如dio、provider等,這些都是package,直接在pubspec中引入就可以在工程中使用??聪氯绾巫约哼M(jìn)行創(chuàng)建
    2021-05-05
  • Android百度地圖poi范圍搜索

    Android百度地圖poi范圍搜索

    這篇文章主要介紹了Android百度地圖poi范圍搜索的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評論

青岛市| 时尚| 临湘市| 望城县| 上杭县| 益阳市| 建宁县| 高阳县| 龙门县| 朔州市| 南川市| 三亚市| 泸水县| 永清县| 梓潼县| 镇江市| 和政县| 灌南县| 梁平县| 中江县| 临邑县| 雅江县| 崇义县| 若尔盖县| 景泰县| 常州市| 海宁市| 荔浦县| 布拖县| 旺苍县| 浦东新区| 长沙县| 呼和浩特市| 芜湖市| 乌兰浩特市| 邳州市| 平武县| 鲜城| 昭通市| 天柱县| 淳安县|