zoukankan      html  css  js  c++  java
  • test aria2 on windows platform

    import 'dart:io';
    import 'dart:convert';
    import 'package:path/path.dart';
    import 'package:web_socket_channel/io.dart';
    
    //https://dldir1.qq.com/qqfile/qq/PCQQ9.1.3/25323/QQ9.1.3.25323.exe
    
    String gid = '';
    bool firstRun = true;
    
    main()async{
      print('1');
      createConnection();
    
      print('2');
      await Future.delayed(Duration(seconds: 1));
      createConnection();
    
      print('3');
      await Future.delayed(Duration(seconds: 1));
      createConnection();
    
    
      String url = 'https://dldir1.qq.com/qqfile/qq/PCQQ9.1.3/25323/QQ9.1.3.25323.exe';
    
      var s = IOWebSocketChannel.connect('ws://localhost:6800/jsonrpc');
      s.stream.listen(onData, onDone: onDone, onError: onError);
      Map task = {"jsonrpc":"2.0","id":"m","method":"aria2.addUri","params":["token:studyaria2",["$url"]]};
      s.sink.add(json.encode(task));
    
      await Future.delayed(Duration(seconds: 1));
      while(true){
        checkStatus(s, gid);
        await Future.delayed(Duration(seconds: 1));
      }
      
      
    
    }
    
    checkStatus(IOWebSocketChannel channel, String gid){
      Map task = {"jsonrpc":"2.0","id":"m","method":"aria2.tellStatus",
        "params":[
          "token:studyaria2",
          "$gid",
          ["gid", "status", "totalLength", "completedLength", "downloadSpeed","files"]
        ]
      };
      channel.sink.add(json.encode(task));
    }
    
    createConnection()async{
      String aria2 = 'C:\Users\gshao\aria2\aria2c';
      var a = await Process.run(aria2, [r'--conf-path=C:Usersgshaoaria2aria2.conf']);
      await Future.delayed(Duration(seconds: 1));
      var xx = await a.exitCode;
      print('create ok 1: $a');
      print('create ok 2 status: ${a.stdout}');
      print('create ok 3 error:${a.stderr}');
      print('create ok 4 exitcode:,');
    }
    
    onData(v){
      print('onData: $v');
      if(firstRun){
        gid = json.decode(v)['result'];
        firstRun = false;
        print('gid:::::::::::: $gid');
      }
    
    }
    
    onDone(){
      print('1, done');
    }
    
    onError(e){
      print('2, error: ${e.toString()}');
    }
    

      

  • 相关阅读:
    Struts2拦截器
    Struts2执行过程
    struts.xml属性extends的执行顺序和剖析源码
    Struts2请求流程图
    8.29 脏检查笔记
    transactionManager 以及datasource type解析
    Mybatis
    Interceptor
    ongl(示例3-6 多值类型的数据处理)
    ongl(原始类型和包装类型)
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10948323.html
Copyright © 2011-2022 走看看