test aria2 on windows platform
2024-09-02 14:15:03
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:\Users\gshao\aria2\aria2.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()}');
}
最新文章
- 转:Delphi的类与继承(VB与delphi比较)
- [SQL]Sql转至问题
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
- ASP.NET Web.Config 读写辅助类
- 动态加载的数据,hover效果
- 初探接口测试框架--python系列7
- C 语言简历一个文件夹 并自己输入字符 来取文件夹名字
- C++#define的用法(含特殊)
- Day1 Python基础学习
- Ubuntu SSH root 登录 Permission denied 错误
- elasticsearch red status fix 红色状态修复
- springboot实现数据库中数据导出Excel功能
- POJ - 2777——Count Color(懒标记线段树二进制)
- MM-RGV、AGV 、IGV是什么
- Unity/C#基础复习(3) 之 String与StringBuilder的关系
- SpringCloud-初识微服务(一)
- Prism6下的MEF:添加Logger
- 类的成员变量修饰 const 和static
- 马拉车——Manacher一篇看上去很靠谱的理解(代码显然易懂)
- hybird app(混合式app开发)cordova ionic 创建相应平台的app