• aria2 adduri


    demo, ok

    import 'package:flutter/material.dart';
    import 'package:permission_handler/permission_handler.dart';
    import 'package:flutter/services.dart';
    import 'dart:io';
    import 'package:path/path.dart';
    import 'package:path_provider/path_provider.dart';
    import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
    import 'package:stream_channel/stream_channel.dart';
    import 'dart:io';
    import 'package:web_socket_channel/web_socket_channel.dart';
    import 'package:web_socket_channel/io.dart';
    import 'dart:convert';
    
    void main() => runApp(MaterialApp(
      home: MyApp(),
    ));
    
    
    class MyApp extends StatefulWidget {
    
      @override
      State<StatefulWidget> createState() {
        return MyAppState();
      }
    }
    
    class MyAppState extends State<MyApp> {
      var permit;
      Directory setupPath;
      Directory sdCard;
      File aria2Main;
      IOWebSocketChannel channel;
    
      checkPermission()async{
        permit = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
        if(permit!=PermissionStatus.granted){
          await PermissionHandler().requestPermissions([PermissionGroup.storage]);
        }
      }
    
      setupFile()async{
        setupPath = await getApplicationDocumentsDirectory();
        aria2Main = File(join(setupPath.path, 'aria2'));
        bool existFile = await aria2Main.exists();
        if(!existFile) {
          print('no exist so to create it');
        var aria2File = await rootBundle.load('assets/aria2c');
        var aria2FileBuf = aria2File.buffer;
        aria2Main.writeAsBytesSync(aria2FileBuf.asUint8List());
    
        await Process.run('chmod', ['755', aria2Main.path]).then((e) {
          print(e.stdout);
          print(e.stderr);
          print(e.exitCode);
        });
        }
    
        var configFile = await rootBundle.load('assets/aria2.conf');
        var confbuf = configFile.buffer;
        File(join(setupPath.path, 'aria2.conf')).writeAsBytesSync(confbuf.asUint8List());
    
        print('start servicess rpc:');
        await Process.run(aria2Main.path, ['--conf-path=${setupPath.path}//aria2.conf']).then((e){
          print(e.stdout);
          print(e.stderr);
          print(e.exitCode);
        });
      }
    
      startService()async{
        channel = IOWebSocketChannel.connect('ws://localhost:6800/jsonrpc');
        channel.stream.listen((data){
          print('data: $data');
        });
      }
    
      downloadFile()async{
        sdCard = await getExternalStorageDirectory();
        String url = 'http://speed.189.cn/upload/BSSAClientSetup9.exe';
        Map xx = {"jsonrpc":"2.0","id":"m","method":"aria2.addUri","params":[["$url"]]};
        channel.sink.add(json.encode(xx));
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text('Aria2'),),
          body: Container(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                RaisedButton(child: Text('checkPermission'),onPressed: (){
                  checkPermission();
                },),
                RaisedButton(child: Text('setupFile'),onPressed: (){
                  setupFile();
                },),
                RaisedButton(child: Text('start service'),onPressed: (){
                  startService();
                },),
                RaisedButton(child: Text('Download'),onPressed: (){
                  downloadFile();
                },),
              ],
            ),
          ),
        );
      }
    }
    

      

    V/BoostFramework(13547): BoostFramework() : mPerf = com.qualcomm.qti.Performance@667a10e
    I/flutter (13547): start servicess rpc:
    I/flutter (13547): data: {"id":"m","jsonrpc":"2.0","result":"3a85b5cc8bda8388"}
    I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadStart","params":[{"gid":"3a85b5cc8bda8388"}]}
    I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadComplete","params":[{"gid":"3a85b5cc8bda8388"}]}
    

      

  • 相关阅读:
    java-信息安全(十)-签名002-数字签名算法DSA
    java-信息安全(九)-https002-基于DH,非对称加密,对称加密等理解
    java-信息安全(八)-密钥交换/协商机制、迪菲-赫尔曼(DH)密钥交换
    java-信息安全(七)-https001-基于非对称加密,对称加密等理解
    java-信息安全(六)-签名001-基于RSA理解数字签名示例
    java-信息安全(四)-非对称加密算法001-RSA
    java-信息安全(五)-数据签名、数字证书
    java-信息安全(三)-PBE加密算法
    java-信息安全(二)-对称加密算法工作模式ECB,CBC,CRT、DES,3DES,AES,Blowfish,RC2,RC4
    信息安全(一)-编码算法【base64编码、base58编码】、哈希算法【MD、sha、RipeMD-XX、hamc】
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10908386.html
Copyright © 2020-2023  润新知